我有一个简单的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);
}
}
答案 0 :(得分:2)
您需要在声明时指定vertices
的大小。您不能使用初始值设定项来指定类中空数组的大小(语言规范部分dcl.init.aggr,第5段)。
const GLfloat vertices[3] = {1, 2, 3};