1

配列から整数を返すために、C ++の単純なクラスの[](角括弧)演算子をオーバーロードしました。次に、このオーバーロードされた演算子をメンバー関数で再利用します。*this[ i ]演算子を直接参照することはできますが、使用が明らかに機能しないため、これを実装するのに問題があります。

int & A::operator [] (size_t i)
{

    return ints[ i ];

}
...
int A::getVal ( size_t i) const
{

  // Does not work
  return *this[ i ];

  // Does work
  // return operator []( i );

}

ポインターを逆参照thisして演算子[]を使用するとコンパイルエラーが発生するのに、演算子を直接呼び出すと機能するのはなぜですか?

コンパイル時に次のエラーが発生します。

'constArray'から'char'に変換できません

ご入力ありがとうございます。

4

1 に答える 1

7

ポインタthisを逆参照し、演算子[]を使用すると、コンパイルエラーが発生するのはなぜですか。

そうではありません。しかし、あなたはそれを正しく綴らなければなりません。変化する

return *this[ i ];

return (*this)[ i ];

最初に書かれたように、それはに適用さ[i]this、結果を逆参照します。

于 2012-09-13T20:54:22.207 に答える