2013-03-04 67 views
1

我試圖在這樣的C++對象中編寫setter函數。爲什麼我不能在C++中使用setter?

void set_acceleration(double acceleration) { 
    acceleration_(acceleration); 
} 

其中acceleration_是一個私有變量。然而,G ++發出編譯時錯誤:

'((Car*)this)->Car::acceleration_' cannot be used as a function. 

我知道acceleration_double,而不是一個功能,但爲什麼我不能將它設置這樣?當我構造一個Car對象時,我設置了acceleration_

+4

呃...因爲設置值的語法是賦值? – 2013-03-04 22:26:26

回答

9

的語法是非法的,除非你初始化變量,無論是在聲明(這將創建一個新的變量,而不是修改你的類成員,所以這是不是你想要什麼):

double acceleration_(acceleration); 

或成員初始化列表:

className() : acceleration_(acceleration) 
{ 
} 

你要找的分配:

acceleration_ = acceleration; 
相關問題