Movie
オブジェクトを配列に格納する汎用クラスを作成しようとしています。 配列に要素を追加または削除するには、+=
と-=
演算子をオーバーライドします。エラーC2677:バイナリ '+ =':タイプ 'ムービー'(または許容される変換はありません)を持つグローバル演算子が見つかりません
template<typename Element>
movieArray<Element>& movieArray<Element>::operator-=(int position)
{
// some code here...
return *this;
}
template<typename Element>
void movieArray<Element>::deleteElem(int position)
{
this->elements -= position;
}
削除部分は期待どおりに機能します。私はAdd操作のために同じことを行うときしかし、:
template<typename Element>
movieArray<Element>& movieArray<Element>::operator+=(const Element &elem)
{
elements[lenght++] = elem;
return *this;
}
template<typename Element>
void movieArray<Element>::addElem(const Element &elem)
{
resizeArray();
this->elements += elem;
}
を私は次のエラーが表示されます
error C2677: binary '+=' : no global operator found which takes type 'Movie' (or there is no acceptable conversion)
なぜこれが起こっている、私はわかりません。
からint
に変更すると、-=
メソッドのように、コードがコンパイルされます。
実際の質問をよりよく反映するようにタイトルを変更する必要があります。具体的なエラーはありません。さもなければあなたは多くの応答を得ることはありません。何かが好きです:バイナリ+ =グローバルオペレータを指定するとエラーが発生します。 – CaptainBli
テンプレートをインスタンス化するコードスニペットを表示できますか? – Christophe
'elements'は何と宣言されていますか?このエラーは、 'elements'に使用される型が' Movie'を入力として受け入れる 'operator + ='実装を持たないことを伝えています。 'addElem()'が 'operator + ='を呼び出すようにしたければ、 'this-> elements + = elem;'の代わりに '* this + = elem;'を使います 'deleteElem()'と同様に、 - = '、this - > elements - = position;'の代わりに '* this - = position;'を使います。 –