1

我试图在这样的 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对象时,我就是这样设置的。

4

1 回答 1

9

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

double acceleration_(acceleration);

或在成员初始化列表中:

className() : acceleration_(acceleration)
{
}

您正在寻找任务:

acceleration_ = acceleration;
于 2013-03-04T22:23:56.613 回答