回答編集履歴
1
update
answer
CHANGED
@@ -1,3 +1,6 @@
|
|
1
1
|
メンバ関数`Polynomial::copy_Pol(Polynomial &result)`の引数型が「非constな`Polynomial&`」になっていることが原因です。
|
2
2
|
|
3
|
-
コピーコンストラクタ`Polynomial::operator=(const Polynomial&)`は`const Polynomial&`を引数にとりますが、この実引数を`copy_Pol`メンバ関数に渡そうとすると「`const Polynomial&`から`Polynomial&`への変換」が
|
3
|
+
コピーコンストラクタ`Polynomial::operator=(const Polynomial&)`は`const Polynomial&`を引数にとりますが、この実引数を`copy_Pol`メンバ関数に渡そうとすると「`const Polynomial&`から`Polynomial&`への変換」が必要になってしまいます。C++ではconst修飾を外す変換は(非常に危険なため)自動的では行いませんから、質問中にある通りコンパイルエラーとなります。
|
4
|
+
|
5
|
+
----
|
6
|
+
(コードレビュー的観点になりますが)`copy_Pol`メンバ関数の処理内容と、コピーコンストラクタの処理がかみ合っていないようです。`copy_Pol`では引数`result`に計算結果が格納されるようですが、コピーコンストラクタの右辺`rhs`を渡そうとしています。これでは `a = b;` の `b` 側が変更されてしまうのでは?
|