質問するログイン新規登録

回答編集履歴

1

update

2019/06/03 02:01

投稿

yohhoy
yohhoy

スコア6191

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&`への変換」がj必要になってしまいます。C++ではconst修飾を外す変換は(非常に危険なため)自動的では行いませんから、質問中にある通りコンパイルエラーとなります。
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` 側が変更されてしまうのでは?