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

Why can't I set like so in a setter in C++?

本文关键字:设置 二传手 不能 C++ 为什么      更新时间:2023-10-16

我尝试在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_设置为这样。

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

double acceleration_(acceleration);

或在成员初始化列表中:

className() : acceleration_(acceleration)
{
}

你正在寻找任务:

acceleration_ = acceleration;