将值赋给只读成员 - C++

Sou*_*ker 0 c++ protected readonly

我将如何制作一个ElectricPump并在该对象中分配值"rate".我的当前代码出现以下错误:

../src/Boat.cpp:144:7: error: assignment of read-only member 'Pump::rate'
Run Code Online (Sandbox Code Playgroud)

以下是我的班级声明:

class Pump
{
protected:
    Pump(float rate);
    virtual void pump(Boat &) = 0;
    const float rate;
};

class ElectricPump : public Pump
{
public:
    ElectricPump();
    virtual void pump(Boat &);
};
Run Code Online (Sandbox Code Playgroud)

执行:

Pump::Pump(float r) : rate(r){}

ElectricPump::ElectricPump(){
    rate = 5.0;
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*ner 6

声明为const的成员不能被分配,只能初始化,例如在构造函数的初始化程序列表中.因为子类不能初始化其超类的数据成员,所以你必须"调用"超类的构造函数:

ElectricPump::ElectricPump() : Pump(5.0) { }
Run Code Online (Sandbox Code Playgroud)