在C ++中使用受保护的成员数组时类型不完整

时间:2017-08-06 00:07:07

标签: c++

我有一个简单的C ++应用程序。当我尝试将sizeof与成员变量一起使用时,我收到"Incomplete type is not allowed"的错误。当我将变量设为全局变量(比如在main之外定义它)时,我不会收到此错误。

为什么会这样?

在代码中,我的问题如下:

class example : public application
{
private:
    void init()
    {
        // The "sizeof" call raises an error, "incomplete type is not allowed"
        glNamedBufferStorage(vbo, sizeof(vertices), vertices, 0);
    }

   const GLfloat vertices[] = {1, 2, 3};
}

如果我在类之外定义const GLfloat vertices[] = {1, 2, 3};(使其成为全局),则可行。

const GLfloat vertices[] = {1, 2, 3};
class example : public application
{
private:
    void init()
    {
        // This works
        glNamedBufferStorage(vbo, sizeof(vertices), vertices, 0);
    }
}

1 个答案:

答案 0 :(得分:2)

您需要在声明时指定vertices的大小。您不能使用初始值设定项来指定类中空数组的大小(语言规范部分dcl.init.aggr,第5段)。

const GLfloat vertices[3] = {1, 2, 3};