gpt4 book ai didi

c++ - 你如何覆盖 operator+=

转载 作者:行者123 更新时间:2023-11-30 02:57:22 26 4
gpt4 key购买 nike

我想覆盖所有 = 运算符,其中 lhs 是已知类型,而 rhs 是我自己的类。例如:

    class MyClass;
class Override {
long operator+=(long X, const MyClass& Y);
}
long Override::operator+=(long X, const MyClass& Y) {
return X += (long)Y;
}
void main(int argc, char** argv) {
MyClass X(1);
long Y = 1;
Y += 1; // works great
Y += (long)X; // works great
Y += X; // does not work
}

MyClass 具有适当的转换和创建方法。

我知道我错过了什么,但我不知道是什么。

我得到一个编译器错误

    Y += X

具有以下功能

    long Override::operator(long& X, const MyClass& Y) ...

谁能告诉我正确的做法是什么?

谢谢艺术

最佳答案

Override 类在这里完全没用。只需编写一个全局函数:

long &operator+=(long &X, const MyClass& Y) {
return X += (long)Y;
}

请注意,第一个参数 (X) 必须通过引用传递,因为它会被运算符(operator)修改。

关于c++ - 你如何覆盖 operator+=,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14697111/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com