2016-11-07 6 views
1

作成したデータ構造に対して[]演算子がオーバーロードされました。私は[インデックス+ 1]の値を[インデックス]に代入するために、データ構造内の別の関数で[]演算子を使いたいと思っています。どうすればいい?クラスの実装で[]を使用すると、C++

私が試した:

  • これを - > [インデックス]
  • *この[インデックス]
  • &この[インデックス] - [インデックス]
+0

だけ明確にする:あなたは 'クラス内から[]'オペレータに電話をしたいですか? – Rakete1111

+0

はい。私は、stlベクターのようにerase()を実装したいと思っていますが、別のデータ構造にしたいと思います。 –

答えて

8

だけラップ*this括弧内に:

(*this)[index] 

もう一つの方法は、関数としてオペレーターを呼び出すする必要があります。

this->operator[](index) 
+0

あなたの答えは検索のためには機能しているように思えますが、データ構造の実際の内容は編集できません。例として、(* this)[50]を100に設定した後も、データ構造は(* this)[50]の元の値を返します。 –

+5

これは実装上のエラーです。左辺値を返さず、代わりにprvalueを返すことを賭けています。 – pat

+0

@CameronTylerCassidy: '[] '演算子の実装をチェックする価値があります。そのうち2つはlvaueの参照を返すものとrvalueのconst参照を返すものです。参照を返すリファレンスが実際に構造内のオブジェクトへの参照を返さない場合もあります。 –

関連する問題