You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++类中变量阈值检测与修改实现遇阻,新手求助

修复C++类中的无限循环与语法错误

问题拆解与修正步骤


1. 修复对象创建的语法错误

你在main里创建对象的写法Numbers.one;是错误的,正确的C++类实例创建方式是:

Numbers one;

2. 解决无限循环问题

Check()函数里的while(true)会无限运行,哪怕Current已经低于阈值。应该把循环条件改成仅当Current >= Limit时执行循环,满足条件就处理,不满足就自动退出:

void Check() {
    // 当Current达到或超过Limit时才循环处理
    while (Current >= Limit) {
        counter++;
        Current -= Limit; 
        Limit = Limit * counter;
    }
}

3. 初始化成员变量

类中的Limit、Current、counter没有初始值,会被分配随机的垃圾值,导致逻辑混乱。添加构造函数来初始化这些变量(这里假设初始阈值Limit为100,Current初始为0,counter初始为1,避免乘以0导致阈值变为0):

// 构造函数:创建对象时自动初始化成员
Numbers() : Limit(100), Current(0), counter(1) {}

4. 调整函数调用顺序

你现在先调用Check()再给Current赋值,这时候Current是初始值(或垃圾值),逻辑完全颠倒了。应该先给Current添加数值,再执行检查逻辑。


完整修正代码

#include <iostream>
using namespace std;

class Numbers{
private: 
    int Limit, Current, counter;

public:
    // 构造函数初始化成员变量
    Numbers() : Limit(100), Current(0), counter(1) {}

    void addCurrent(int a) { Current += a; }
    int getCurrent() {return Current; }
    int getLimit() {return Limit; }
    int getCounter() {return counter; }
     
    void Check() {
        while (Current >= Limit) {
            counter++;
            Current -= Limit; 
            Limit = Limit * counter;
        }
    }
};

int main(){
    Numbers one;
    one.addCurrent(200); // 先给Current添加数值
    one.Check();         // 再执行检查与修改逻辑
    cout << one.getLimit() << "/" << one.getCurrent() << "/" << one.getCounter();
    return 0;
}

运行逻辑说明

  • 初始状态:Limit=100,Current=0,counter=1
  • 调用addCurrent(200)后:Current=200
  • 进入Check()循环:
    1. 第一次循环:200 >=100成立 → counter变为2,Current=200-100=100,Limit=100*2=200
    2. 第二次判断:100 >=200不成立 → 退出循环
  • 最终输出:200/100/2

额外优化(可选)

如果希望每次修改Current后自动执行检查,可以把Check()调用放到addCurrent()函数里,这样不用手动调用:

void addCurrent(int a) { 
    Current += a;
    Check(); // 添加数值后自动触发检查
}

此时main函数只需写:

int main(){
    Numbers one;
    one.addCurrent(200);
    cout << one.getLimit() << "/" << one.getCurrent() << "/" << one.getCounter();
    return 0;
}

内容的提问来源于stack exchange,提问作者Elia Zelotti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 05:27:02