たとえば、このクラスを作成しましApple
たが、オーバーロードされた がありoperator []
ます。
次に、別のクラスで、リンゴの配列を作成しましたApple stack[10]
。
次に、オブジェクトでstack[2]
はなく式で使用してstack[2]
いたとき、コンパイラはスタックを と見なし、とそのパラメータを としてstack[0]
呼び出します。operator []
2
stack[2]
そのようにならずに電話をかける方法を提案してもらえますか?
たとえば、このクラスを作成しましApple
たが、オーバーロードされた がありoperator []
ます。
次に、別のクラスで、リンゴの配列を作成しましたApple stack[10]
。
次に、オブジェクトでstack[2]
はなく式で使用してstack[2]
いたとき、コンパイラはスタックを と見なし、とそのパラメータを としてstack[0]
呼び出します。operator []
2
stack[2]
そのようにならずに電話をかける方法を提案してもらえますか?
ポインターを使用して配列要素を取得できます。
*(stack+2)[3]; // lookup element 2 and call its [] operator with 3
これまでに与えられた情報に基づいてstack[2]
、オブジェクトを指しApple
ます。stack[2][5]
クラスでオーバーロードされたを呼び出すこともできoperator[]
ますApple
。
コードを提供することは役に立ちました。
x
ただし、クラス Apple に変数があるとします。を使用してアクセスできます(stack+2)->x
。これは と同じように機能しstack[2].x
ます。また、オーバーロードされた演算子を使用する場合は、同様に使用できます。これにより、コンパイラが混乱することはありません。