我在使用一个使用单独文件类的简单程序时遇到了麻烦(我对他们来说很陌生)。你能帮我弄清楚为什么它不能显示改变的价值吗?
主
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;
}
它一直显示健康为0,我假设它是某种默认值,因为它没有设置为我的begin()函数中描述的十。如果有人知道问题是什么或者有关于在类中处理变量并在函数之间进行交易的最佳方法的建议那么请分享你的智慧!
答案 0 :(得分:0)
函数start()和beginning()仍然是类的成员,就像你的getter和setter函数一样。它们位于不同的.cpp并不意味着您需要分别使用新的本地实例set
和stat
,它们仍然是声明为startout
的实例的成员并且将在它。你让他们在全新的实例上运作。
所以他们应该被定义为
void stats::beginning() {
setHealth(10);
}
void stats::start() {
cout << "Health: " << getHealth() << endl;
}