为什么不能在返回const的bool函数中为类成员变量分配值? C ++

时间:2018-10-13 15:28:15

标签: c++

bool Car::isEnoughFuel(int miles) const
{
drivableMiles = fuelGauge.getCurrentFuel() * MPG; // Error here
bool status = true;

if (miles > drivableMiles)
    status = false;
return status;
}

错误:表达式必须是可修改的左值。

1 个答案:

答案 0 :(得分:1)

  

使用const关键字声明成员函数将指定该函数是“只读”函数,不会修改为其调用对象的对象。常量成员函数无法修改任何非静态数据成员,也不能调用任何非常量成员函数。 (Source

drivableMiles = fuelGauge.getCurrentFuel() * MPG;行中,您试图修改对象isEnoughFuel()的调用。您可能不想拥有const的功能。但是,一种解决方法是改为使用副本。