我想以某種方式爲我的模板Polynom類重載+=
運算符,以便我可以同時使用Polynom和常量作爲參數。在Polynom類中重載+ =運算符以添加Polynoms和常量
我寫了一個構造函數和下面的操作我的類中:
Polynom(const T& num = 0) {
coefs.push_back(num);
}
friend Polynom& operator += (Polynom& lhs, const Polynom& rhs) {
...
}
,它工作正常,我可以使用:poly += 1;
。當編譯器遇到類似的事情時,它會做什麼?它認爲存在使用這些參數沒有+ =運算符:
(Polynom<int>& lhs, const int)
但有一個:
(Polynom<int>& lhs, const Polynom& rhs)
所以,它試圖const int
轉換爲const Polynom&
?它使用構造函數,對吧?但爲什麼當添加一個常量時這個聲明不工作:
Polynom& operator += (Polynom& rhs) {
...
}
編譯器說「不匹配operator + =」。
您的成員'operator + ='應該可能帶有'const Polynom&'參數。 –