假设我有以下数组:
GLfloat vertex[(vertexnm+2)][3];
无法简单分配外部数组的元素:
vertex[0] = {0.0f, 0.0f, 0.0f};
结果为
Array type 'GLfloat [3]' is not assignable
。似乎可以通过以下方式进行:
*(vertex[0]) = *new GLfloat[3] {0.0f, 0.0f, 0.0f};
但这似乎不是一个好的解决方案。有没有一种干净的方法可以做到这一点?
最佳答案
不幸的是,数组只不过是C中的虚假指针而已
例如表示此处它们不会像您期望的那样进行复制(例如,类似对象)。
C ++ 11为数组引入了新的抽象,使数组表现得更好
更像您期望的那样,例如可以复制或分配它们。使用C ++ 11之前的编译器/标准库,您可以在array
中使用TR1中的tr1/array
类。
#include <array>
int main() {
typedef std::array<GLfloat, 3> vertex;
std::array<vertex, vertexnm + 2> a;
a[0] = vertex{0, 0, 0};
}
关于c++ - 分配一个数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17005000/