我正在尝试以+=
某种方式为我的模板 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) {
...
}
编译器说“与运算符 += 不匹配。