2 D配列インデックス演算子の実装


質問する
クラスを用いて直接2 D配列を実現する問題.
ex)
arr2d[n][m] == (arr2d.operator[](n))[m] == ((반환값).operator[])(m)
このような動作を実現することです.
方法
第1項:第2項と第3項の関数名とパラメータ(整数)は同じですが、戻り形式は異なります.したがって、2つの関数は異なる関数であるべきです.そこで,関数過負荷を考慮した.
制限:関数のオーバーロードはパラメータ、contで区切られます.戻り型は過負荷の基準にはなりません.そのため過負荷できません.
2つ目:2つの関数は異なるはずです.しかし、過負荷は不可能です.したがって、2つのクラスを定義します.これにより、名前は同じで、パラメータは同じですが、異なるオブジェクトに属するため、重複しません.
質問:では、2つのクラスをどのように関連付けますか?まるで2 D配列のようです.
解決:オブジェクト配列ポインタをクラスにメンバーとして配置します.次に、演算子[]関数を使用して、ポインタが指すn番目のオブジェクトを返します.次に、オブジェクトのクラスで演算子[]関数を定義します.次に、オペレータ[](さっきとは異なるクラスで定義された関数)を使用して、配列に格納されている整数を返します.もちろん、これを行うには、クラスの配列をメンバー変数として使用する必要があります.
コア
1.戻り型は関数のオーバーロード基準として使用できません.
2.2つのクラスを関連付ける方法-最初のクラスの戻りタイプは別のクラスでなければなりません.最初のクラスの変数を別のクラスのポインタとして関連付けます.