我想覆盖所有 = 运算符,其中 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) ...
谁能告诉我这样做的正确方法是什么?
谢谢艺术