Подобные вещи случаются постоянно, когда вы обрабатываете 2D и 3D изображения.
То, что вы написали (array = *array3D
), очевидно, не будет компилироваться, хотя типы не совпадают array3D
- это **int
, а массив - *int
.
Если вы правильно настроили array3D
, например (*):
int ***array3D = new int **[zsize];
for(int z = 0 ; z < zsize ; ++z)
{
array3D[z] = new int *[ysize];
for(int y = 0 ; y < ysize ; ++y)
{
array3D[z][y] = new int [xsize];
}
}
Затем вы можете получить доступ к таким вещам, как array3D[z][y]
(указывает на элемент x=0
для данных z
и y
)
или &(array3D[z][y][x])
(указывает на элемент x
, y
, z
)
или *(array3D[z])
(указывает на элемент y=0
и x=0
для данного z
), и тогда все они будут иметь тип int *
. Я предлагаю написать, как организованы ваши данные.
Конечно, вы также должны вручную удалить эту структуру, и если вы делаете это в продукте, вы должны быть осторожны, чтобы правильно обрабатывать исключения и не создавать утечки, но это другая тема.