填充结构中定义的数组

时间:2017-12-08 13:09:58

标签: c++ arrays

我正在尝试使用浮点坐标填充顶点数组但不顺利。我定义了多个结构,如下所示:

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 - 语法错误:'{'

在我上面评论的那一行。

真的输了,这里出了什么问题。

1 个答案:

答案 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。

相关问题