我试图在像这样的C ++对象中编写一个setter函数。
void set_acceleration(double acceleration) {
acceleration_(acceleration);
}
其中acceleration_
是私有变量。但是,g ++发出了编译时错误:
'((Car*)this)->Car::acceleration_' cannot be used as a function.
我知道acceleration_
是double
,而不是函数,但为什么我不能这样设置呢?当我构造一个acceleration_
对象时,我设置了Car
。
答案 0 :(得分:9)
语法是非法的,除非你在声明时初始化变量(这将创建一个新变量,而不是修改你的类成员,所以这不是你想要的):< / p>
double acceleration_(acceleration);
或在成员初始化列表中:
className() : acceleration_(acceleration)
{
}
您正在寻找作业:
acceleration_ = acceleration;