2015-06-29 41 views
-3

我一直在使用一個簡單的程序,利用單獨的文件類(我對他們來說很新)的麻煩。你能幫我弄清楚爲什麼它不會顯示改變的值嗎?如何使函數與類之間的變量交互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; 
} 

它保持健康顯示爲0,我以爲是某種形式的違約,因爲它不是被設置爲10,如我的開始()函數中所述。如果有人知道問題出在哪裏,或者對處理變量和在函數之間進行交易的最佳方式有任何建議,請分享您的智慧!

+0

'統計設置;' - 你認爲什麼是幹什麼的?它宣佈了一個全新的變量。它不是指您正在調用該方法的對象。你爲什麼認爲'this'關鍵字存在於該語言中? (但是顯然你對於一個對象是完全混淆的,你需要首先了解更多。) –

回答

0

函數start()和beginning()仍然是類的成員,就像getter和setter函數一樣。他們在不同的.cpp中並不意味着你需要新的本地實例統計信息setstat,它們仍然是實例的成員,聲明爲startout並且將對其進行操作。你已經讓它們在全新的實例上運行。

因此,他們應該被定義爲

void stats::beginning() { 
    setHealth(10); 
} 

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