2 次元配列の Operator[][] オーバーロード
疑問が生じます: 表記を有効にするために、[] 演算子を 2 回オーバーロードできますか二次元配列の function3 のようなものですか?
答え:はい、可能です
これを実現するには、operator[] をオーバーロードして、目的の要素にアクセスするための別の [] 演算子を提供するオブジェクトを返すことができます。コード例を次に示します。
class ArrayOfArrays { public: ArrayOfArrays() { _arrayofarrays = new int*[10]; for(int i = 0; i < 10; ++i) _arrayofarrays[i] = new int[10]; } class Proxy { public: Proxy(int* _array) : _array(_array) { } int operator[](int index) { return _array[index]; } private: int* _array; }; Proxy operator[](int index) { return Proxy(_arrayofarrays[index]); } private: int** _arrayofarrays; };
これにより、次のような使用が可能になります。
ArrayOfArrays aoa; aoa[3][5];
上記は簡略化された例であることに注意してください。通常は、追加の境界チェックやその他の機能が実装されます。
以上が2 次元配列アクセスのために [] 演算子を 2 回オーバーロードできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。