我正在尝试使用浮点坐标填充顶点数组但不顺利。我定义了多个结构,如下所示:
typedef struct _Polyg
{
float *verts;
int nverts;
} Polyg;
typedef struct _Layer
{
// array of polygons
Polyg *polys;
int npolys;
} Layer;
所以我有层,它由多边形组成,基本上由顶点组成。然后我尝试按如下方式填充数据结构数组:
void loadLayers(Layer *layers)
{
// takes an array of layers and fills them with data
layers[0].npolys = 2;
layers[0].polys[0].nverts = 8;
layers[0].polys[0].verts = { //ERROR IS HERE
100.0f, 134.0f, 0.0f,
100.0f, 115.0f, 0.0f,
119.0f, 98.0f, 0.0f,
119.0f, 0.0f, 0.0f,
7.0f, 0.0f, 0.0f,
3.0f, 5.0f, 0.0f,
3.0f, 130.0f, 0.0f,
7.0f, 134.0f, 0.0f, };
}
所以在这个exmaplen中,我试图用顶点坐标(X,Y,Z)填充第一层的第一个多边形。但是我收到了错误:
预期表达
和
C2059 - 语法错误:'{'
在我上面评论的那一行。
真的输了,这里出了什么问题。
答案 0 :(得分:0)
使用layers[0].polys[0].verts = {
这一行,您尝试initializer-list assignment float*
operator=
,只有在以下情况下才允许:
赋值表达式,其中list-initialization初始化重载的
的参数float*
float*
是一种内置类型,因此它内置的赋值运算符只需要initializer_list<float>
。这意味着您无法将float*
分配给vector<float>
。
相反,请考虑 <{1}}定义内置operator= (initializer_list<float>)
的{{1}}:http://en.cppreference.com/w/cpp/container/vector/operator%3D
另外,请考虑同时删除_Polyg
和_Layer
结构,以支持vector
s。