指向3D指针的数组

时间:2015-06-07 01:56:10

标签: c++ arrays

我试图创建一个指向充满指针的动态3D阵列的指针。我和Voxel一起工作,所以让我们说t_cube是我的对象。

首先,我尝试这样做:

t_cube* (*m_Array)[][][];

我以为我可以这样做

m_Array = new t_cube[sizeX][sizeZ][sizeY];

然而,编译失败了。

接下来我尝试了这个:

t_cube *(m_Model[]); // This is my .h
{
    t_cube *model_Tempo[sizeX][sizeZ][sizeY]; // And this is in my class constructor.
    m_Model = model_Tempo;
}

再次,这无法编译。

1 个答案:

答案 0 :(得分:0)

我希望这个例子有助于解决您的问题:

因为,我们正在处理三维数组指针。所以,如果我用C ++语法编写它,就像是:

t_cube *array[x_size][y_size][z_size];

但是,你已经提到过,它无法执行。 现在,使用动态分配方法做同样的事情。

t_cube ****array;                // Since, it a pointer to the 3D Array
array = new t_cube ***[x_size];
for(int i=0; i<x_size; i++) {
    array[i] = new t_cube **[y_size];
    for(int j =0; j<y_size; j++) {
        array[i][j] = new t_cube *[z_size];
    }
}                                /*  I'm sure this will work */

而且,你遇到麻烦的原因是:

  1. m_Array 的大小可能非常大: x_size * y_size * z_size * sizeof(t_cube)
  2. 您必须在本地(在函数内)定义 m_Array ,这是程序故障的主要原因。