我将如何制作一个ElectricPump并在该对象内分配值“ rate”。我的当前代码出现以下错误:
../src/Boat.cpp:144:7: error: assignment of read-only member 'Pump::rate'
以下是我的课程声明:
class Pump
{
protected:
Pump(float rate);
virtual void pump(Boat &) = 0;
const float rate;
};
class ElectricPump : public Pump
{
public:
ElectricPump();
virtual void pump(Boat &);
};
实现方式:
Pump::Pump(float r) : rate(r){}
ElectricPump::ElectricPump(){
rate = 5.0;
}
最佳答案
声明为const的成员不能分配,只能初始化,例如在构造函数的初始化列表中。因此,由于子类无法初始化其超类的数据成员,因此您必须“调用”超类的构造函数:
ElectricPump::ElectricPump() : Pump(5.0) { }