我正在使用OpenGL编写新类,对于构造函数我有两种可能性:
VertexObject();
VertexObject(GLuint* vertices,GLuint* elements);
我想做的是VertexObject()用已经初始化的数组调用另一个,例如
VertexObject::VertexObject() :
VertexObject(
(GLuint[]) {
0, 1, 2,
2, 3, 0
},
(GLuint[]) {
0, 1, 2,
2, 3, 0
}) {}
但是似乎C++不允许我这样做,错误是“获取临时数组的地址”。
我什至不确定我要的是可行的,但是任何帮助将不胜感激。
最佳答案
如果您在构造函数中深度复制该数组,或者从未修改过该数组并且VertexObject
不获取指针的所有权,则此方法应该有效:
GLuint def_vert[6] = { // static storage
0, 1, 2,
2, 3, 0
};
VertexObject::VertexObject() :
VertexObject(def_vert, def_vert) {}
当然,如果每个参数都需要不同的值,则可以使用单独的数组。
关于c++ - 来自另一个具有数组初始化功能的构造函数的C++构造函数调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24244389/