そこで、迷路生成プログラムで使用する n 次元配列構造を作成しようとしています。
問題を単純化しました (テンプレート化して必要なすべてのヘルパー関数を追加する前に、理論を理解しようとする目的で)
したがって、私の問題は現在のところ、次元数を指定するコンストラクターへの引数を受け取る ArbitraryArray クラスを作成したいということです。各次元の長さは 5 になります。 (今のところ)
これは私がこれまでに持っているものです:
class ArbitraryArray{
public:
int array[5];
ArbitraryArray*subArray;
ArbitraryArray(){}
ArbitraryArray(int depth){
if (depth == 2) subArray = new ArbitraryArray[5];
else if (depth > 2) for (int i = 0; i < 5; i++) subArray = new ArbitraryArray(depth - 1);
}
};
そして、次のような 2 次元オブジェクトを作成します。
ArbitraryArray testArray(2);
または次のような 3 次元オブジェクト:
ArbitraryArray testArray(3);
問題は、深さ = 3 でテストしてから、次の方法で整数値を設定しようとしたときです。
testArray.subArray[3].subArray[4].array[4] = 7;
実行時エラーが発生したため、これらのオブジェクトを動的に割り当てる方法が間違っていると思いました。
また、次のような行で呼び出されるため、空のデフォルト コンストラクターを含めました。
subArray = new ArbitraryArray[5];
これが任意の次元配列データ構造を作成するための最良の方法ではないことは承知していますが、より良い方法を探す前に、この実装が機能しない理由を突き止めたいと思います。
また、次のような行を入れるべきではないことも承知しています。
int array[5];
また、配列の最下位次元より上のすべてのレベルで大量のメモリ割り当てが無駄にならないように、代わりにポインターにする必要があります。そして、この基本的なアイデアが機能するようになったら、それに修正するつもりです。