У меня есть гигантский трехмерный массив, представляющий мой мир. Он слишком велик для статической инициализации:
alias Cell[128][128][128] World; // <-- The compiler points to this line
Error: index 128 overflow for static array
Я пытался использовать World* world
, но он все равно выдавал ошибку с переполнением, описанным выше. Итак, что у меня есть прямо сейчас, так это уродливая каша:
alias Cell[][][] World;
// ...
private World world;
// ...
world.length = WORLD_XDIM;
for (uint x = 0; x < world.length; ++x)
{
world[x].length = WORLD_YDIM;
for (uint y = 0; y < world[x].length; ++y)
{
world[x][y].length = WORLD_ZDIM;
}
}
Это работает, но заставляет меня немного плакать внутри. Есть ли способ привести результат calloc к трехмерному массиву? Я сделал это с помощью нарезки обычных массивов, но трехмерность меня смущает.