c++ - += 运算符重载

标签 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;
}

+ 运算符有效,但是当我运行以下代码时:

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/

相关文章:

c++ - 如何在 C++ 中获取图层类型的 caffe

c++ - 打印数组 3 行

c++11随机数生成: how to re-implement `uniform_int_distribution` with `mt19937` without templates

c++ - 没有运算符 "<"匹配这些操作数操作数类型是 : double < my_class

c++ - 结构取消引用运算符(运算符->)

c++ - 模板运算符<未调用

c++ - 根据值的概率从 Map 中获取随机键

c++ - linux mq_open 忽略 mq_msgsize 属性

c++ - 关于 () 运算符重载的问题

c++ - 重载复制赋值运算符