我想重寫all =運算符,其中lhs是已知類型,rhs是我自己的類。舉個例子:如何重載operator + =
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) ...
誰能告訴我做的正確的方式,這是什麼呢?
感謝 藝術
你超載有三個參數。 – chris
出於好奇,爲什麼你在覆蓋類中包裝運算符+ =? – 2013-02-04 22:45:52
無論如何,我認爲你的意思是「過載」。重寫是非常不同的。 – chris