テンプレートの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)
しかし、次の1つがあります。
(Polynom<int>& lhs, const Polynom& rhs)
だから、それはに変換しようとconst int
しconst Polynom&
ますか?そして、そのためにコンストラクターを使用しますよね?しかし、定数を追加するときにこの宣言が機能しないのはなぜですか。
Polynom& operator += (Polynom& rhs) {
...
}
コンパイラは「演算子+="に一致しません。