2017-11-03 20 views
-1

多項式クラスを作成していましたが、演算子のオーバーロードが発生しました。私は+ =演算子をうまくオーバーロードすることができた(私は)と思っていましたが、多くのソースでアドバイスされているように、+ =を使用する外部関数を作成しました。それは動作しますが、私はこのオーバーロードされた+演算子の連結

poly a, b, c, d; 
a=b+c+d; 

のような多項式を追加しようとすると、私はエラーを取得何らかの理由 のためにそれらをチェーンすることはできません:「ポリ::ポリ(定数ポリ)」への呼び出しに該当する機能を

マイ+ =関数の本体は、すべてのことは重要ではないですが、それはそれはどのようなものかです:

poly& operator+= (const poly& a){ 
     //implemented += 
     return *this; 

    } 

マイ加算関数(クラスの外で)次のようになります。

const poly operator+ (poly a, const poly & b){ 
    a+= b; 
    return a; 
} 

私はここで間違っていますか?

+0

なぜ 'operator +'が 'const'を返すのですか? – vu1p3n0x

+2

'a'と' b'の両方が 'const 'でなければなりません。 –

+2

[コピーコンストラクタ](https://stackoverflow.com/questions/2168201/what-is-a-copy-constructor-in-c)がありません。 –

答えて

1

polyクラスには、poly(const poly&)という形式のコピーコンストラクタがありません。既に十分なものではないpoly(poly&)がある場合は注意してください。パラメータとしてconst poly&をとるコピーコンストラクタが必要です。

関連する問題