如何使函数与其他c++之间的类变量交互



我遇到了一个使用单独文件类的简单程序的问题(我对它们很陌生)。你能帮我弄清楚为什么它不显示更改后的值吗?

 stats startout;
startout.beginning();
startout.start();

标题

class stats
{
public:
void start();
void beginning();
//setter
void setHealth(int x){
    health = x;
    }
//getter
int getHealth(){
    return health;
    }
private:
int health;
};

实现.cpp文件

void stats::beginning(){
stats set;
set.setHealth(10);
}
void stats::start(){
stats stat;
cout << "Health: " << stat.getHealth() << endl;
}

它一直显示health为0,我认为这是某种默认值,因为它没有像我的beginning()函数中所描述的那样设置为10。如果有人知道问题是什么,或者对处理类中变量以及在函数之间进行交易的最佳方法有建议,那么请分享你的智慧!

函数start()和beginning()仍然是类的成员,就像getter和setter函数一样。它们在不同的.cpp中并不意味着你需要分别为统计数据setstat的新本地实例,它们仍然是声明为startout的实例的成员,并将对其进行操作。你已经让它们在全新的实例上进行操作。

所以它们应该被定义为

void stats::beginning() {
  setHealth(10);
}
void stats::start() { 
  cout << "Health: " << getHealth() << endl;
}

最新更新