为什么我不能在C ++的setter中这样设置?

时间:2013-03-04 22:22:08

标签: c++

我试图在像这样的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

1 个答案:

答案 0 :(得分:9)

语法是非法的,除非你在声明时初始化变量(这将创建一个新变量,而不是修改你的类成员,所以这不是你想要的):< / p>

double acceleration_(acceleration);

或在成员初始化列表中:

className() : acceleration_(acceleration)
{
}

您正在寻找作业:

acceleration_ = acceleration;