我正在尝试做一些非常简单的事情,但我做错了。
标题文件:
class Example
{
public:
typedef struct
{
float Position[3];
float Color[4];
float TexCoord[2];
} IndicatorVertex;
void doSomething();
};
.cpp文件:
void Example::doSomething()
{
IndicatorVertex *vertices;
vertices = IndicatorVertex[] {
{{-1.0, 1.0, 1.0}, {1.0f, 1.0f, 1.0f, 1.0f}, {0.0f, 0.0f}}
{{1.0, 1.0, 1.0}, {1.0f, 1.0f, 1.0f, 1.0f}, {0.0f, 0.0f}},
};
}
编译完成后,我得到Error:(12, 13) unexpected type name 'IndicatorVertex': expected expression
。
(我故意不使用std::vector
等;我故意在c ++ 11设置中使用C功能。)
答案 0 :(得分:4)
你不能像你一样创建动态数组,你需要定义一个像
这样的实际数组IndicatorVertex vertices[] = { ... };
如果你以后需要一个指针,那么请记住,数组会自然地衰减到指向第一个元素的指针。因此,例如,如果您想要调用一个需要IndicatorVertex*
参数的函数,只需传入vertices
,它仍将按预期工作。
如果你想拥有不同的数组并让vertices
指向其中一个,那么你必须如上所示定义数组,并使vertices
指向其中一个。像
IndicatorVertex vertices1[] = { ... };
IndicatorVertex vertices2[] = { ... };
// ...
IndicatorVertex* vertices = vertices1;
// ...
vertices = vertices2;