我已多次搜索过这个问题但仍无法找到答案。我一直收到错误error C2106: '-=' : left operand must be l-value
我的代码看起来像这样
case 1:
mItemCost = 4;
if (player.getGold() >= 4){
cout << "You have bought a dagger which replaces your current weapon!" << endl;
player.getGold() -= mItemCost; // Error here
player.getWeapon().mName = "Dagger";
player.getDamageRange().mLow = 1; // Error here
player.getDamageRange().mHigh = 4; // Error here
}
播放器是指向另一个类的指针。我真的很感激任何帮助。谢谢:D
答案 0 :(得分:2)
您正在尝试为方法调用分配值,除非返回值是引用,否则这是非法的。
你可能意味着像
player.setGold(player.getGold() - mItemCost);
答案 1 :(得分:1)
您正在尝试分配函数的返回值,并且根据错误,该函数不会返回引用。
您有两种方法可以解决此问题。
写入(如有必要)并使用适当的setter代替每个错误。
player.setGold(player.getGold() - mItemCost)
让getters返回引用。
考虑这个简单的程序来重现错误。
#include <stdio.h>
int foo = 0;
int getFoo() {
return foo;
}
int main(){
getFoo() = 5; // error here.
}
我们可以通过更改函数的签名来修复错误以返回引用。
int& getFoo() {
return foo;
}
请注意,这是不这种惯用方式,但将工作。