我正在使用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/

10-11 19:40