Mii*_*cck 2 c++ operator-overloading
我正在尝试在以下代码中为类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;
}
Run Code Online (Sandbox Code Playgroud)
+运算符可以工作,但是当我运行以下代码时:
int main(){
gridCoord coord(1,0);
genDir gd;
coord += gd;
std::cout<< coord;
std::cin.get();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我得到了输出
x: 2 y: 0
x: 1 y: 0
Run Code Online (Sandbox Code Playgroud)
我期待
x: 2 y: 0
x: 2 y: 0
Run Code Online (Sandbox Code Playgroud)
如果它工作.似乎+ =运算符定义的实际上并没有按照预期修改左参数.任何想法为什么会这样?谢谢!
要修改,l您需要通过引用传递它:
inline void operator += (gridCoord& l,const genDir& r){
// ^
Run Code Online (Sandbox Code Playgroud)
否则,您只修改传递gridCoord参数的副本.