我试图在以下代码中为类 gridCoord 和 genDir 重载运算符 +=:
struct gridCoord{
unsigned x;
unsigned y;
}
inline gridCoord operator +(const gridCoord l,const genDir& r){
// This operator is tested and works
}
inline void operator += (gridCoord l,const genDir& r){
l = l+r;
std::cout<<l;
}
+ 运算符有效,但是当我运行以下代码时:
int main(){
gridCoord coord(1,0);
genDir gd;
coord += gd;
std::cout<< coord;
std::cin.get();
return 0;
}
我得到输出
x: 2 y: 0
x: 1 y: 0
我希望
x: 2 y: 0
x: 2 y: 0
如果它正常工作。似乎定义的 += 运算符实际上并没有像预期的那样修改左参数。任何想法为什么会这样?谢谢!
最佳答案
要修改 l
,您需要通过引用传递它:
inline void operator += (gridCoord& l,const genDir& r){
// ^
否则,您只是在修改传递的 gridCoord
参数的拷贝。
关于c++ - += 运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30289637/