假设我有以下数组:

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/

10-13 08:24