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

标签 c++

<分区>

我试过像这样在 C++ 对象中编写 setter 函数。

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

其中 acceleration_ 是私有(private)变量。但是,g++ 发出编译时错误:

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

我知道acceleration_是一个double,不是一个函数,但为什么我不能这样设置呢?当我构造一个 Car 对象时,我设置了 acceleration_

最佳答案

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

double acceleration_(acceleration);

或在成员初始化列表中:

className() : acceleration_(acceleration)
{
}

您正在寻找作业:

acceleration_ = acceleration;

关于c++ - 为什么我不能在 C++ 的 setter 中这样设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15212267/

相关文章:

c++ - 编写并解决计算此代码中乘法次数的递归?

php - 为什么有些程序是用 C++ windows-only 编写的,而有些则不是?

c++ - 菜单的嵌套循环(基本 C++)

c++ - 使 : *** No targets specified and no makefile found. 停止。 [Ubuntu]

c++ - std::vector 中的高效 push_back

c++ - 插入迭代器如何在 C++ 中工作

c++ - 创建原子引用计数的尝试因死锁而失败。这是正确的方法吗?

c++ - QTableView 和唯一 ID

c++ - 使用 C++ 替换字符串文字中的几个字符

c++ - 用于检查所有模板参数类型是否唯一的编译时 C++ 函数