好了,我有一个包含一个指针(将是什么)POINT3对象的阵列的模型类:在C++复制阵列的堆叠阵列到阵列的阵列中的堆
point3* _vertices_colors;
点3具有以下typedef:
typedef GLfloat point3[3];
实质上使point3对象的数组成为数组的数组。然后,在派生类的构造函数,我分配内存,因为我想存储如下顶点和颜色数:
_vertices_colors = new point3[16];
这意味着我的对象有8个顶点与存储在其自己的颜色。然后我定义堆栈准备复制到指针下面的数组:
point3 verticesColors[] = {
{1.0, 1.0, 1.0}, {1.0, 0.0, 0.0},
{-1.0, 1.0, 1.0}, {1.0, 0.0, 0.0},
{-1.0, -1.0, 1.0},{1.0, 0.0, 0.0},
{1.0, -1.0, 1.0},{1.0, 0.0, 0.0},
{1.0, 1.0, -1.0}, {1.0, 0.0, 0.0},
{-1.0, 1.0, -1.0}, {1.0, 0.0, 0.0},
{-1.0, -1.0, -1.0},{1.0, 0.0, 0.0},
{1.0, -1.0, -1.0},{1.0, 0.0, 0.0}
};
然后,我使用for循环复制到阵列上的堆:
for(int i = 0; i < 16; i++)
{
*_vertices_colors[i,0] = *verticesColors[i, 0];
*_vertices_colors[i,1] = *verticesColors[i, 1];
*_vertices_colors[i,2] = *verticesColors[i, 2];
printf("%15f", *_vertices_colors[i,0]);
printf("\t");
printf("%15f", *_vertices_colors[i,1]);
printf("\t");
printf("%15f", *_vertices_colors[i,2]);
printf("\n");
}
然而,这似乎分配1.0,1.0,-1.0到阵列的16行中的每一行。我试过分配指向数组的指针,例如该行的其他方式:
_vertices_colors = verticesColors;
由于verticesColors是恒定指向数组的指针,我想这会工作,但它产生相同的结果。我使用的memcpy也试过:
memcpy(_vertices_colors, verticesColors, sizeof(_vertices_colors));
但这似乎产生了一些不可控的结果。它将每个第一列分配为1.0,其余的为非常大的负整数。任何人都可以看到为什么我的第一种方法不工作?
NB:阵列不是指针。 – 2012-11-02 12:49:38
[我如何在C++中使用数组?](http://stackoverflow.com/questions/4810664/how-do-i-use-arrays-in-c)。我建议使用'typedef std :: array,N> M> MyArray; MyArray a; MyArray * b = new MyArray(a);'或类似的C++风格 –
sehe
@ H2CO3否,但数组的标识符是指向第一个元素的常量指针。这就是我想说的。 – fanatic