函数start()和beginning()仍然是类的成员,就像getter和setter函数一样。它们在不同的.cpp中并不意味着你需要分别为统计数据
我遇到了一个使用单独文件类的简单程序的问题(我对它们很陌生)。你能帮我弄清楚为什么它不显示更改后的值吗?
主
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。如果有人知道问题是什么,或者对处理类中变量以及在函数之间进行交易的最佳方法有建议,那么请分享你的智慧!
set
和stat
的新本地实例,它们仍然是声明为startout
的实例的成员,并将对其进行操作。你已经让它们在全新的实例上进行操作。
所以它们应该被定义为
void stats::beginning() {
setHealth(10);
}
void stats::start() {
cout << "Health: " << getHealth() << endl;
}