使用大括号括起初始化列表初始化struct vector

时间:2013-08-21 10:55:43

标签: c++ c++11 vector struct initializer-list

我初始化这样的普通类型向量:

vector<float> data = {0.0f, 0.0f};

但是当我使用结构而不是普通类型

struct Vertex
{
    float position[3];
    float color[4];
};
vector<Vertex> data = {{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f, 0.0f}};

我收到错误could not convert '{{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f, 0.0f}}' from '<brace-enclosed initializer list>' to 'std::vector<Vertex>'。这有什么问题?

3 个答案:

答案 0 :(得分:17)

缺少一组{}

std::vector<Vertex> data =
{ // for the vector
    { // for a Vertex
        {0.0f, 0.0f, 0.0f},      // for array 'position'
        {0.0f, 0.0f, 0.0f, 0.0f} // for array 'color'
    },
    {
        {0.0f, 0.0f, 0.0f},
        {0.0f, 0.0f, 0.0f, 0.0f}
    }
};

答案 1 :(得分:3)

你还需要一个{}实际

vector<Vertex> data = {{{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f, 0.0f}}};

一个&#39; {&#39;对于vector,一个用于struct,一个用于struct member-arrays ...

答案 2 :(得分:0)

具有矢量成员的对象也可以初始化。

String 1: Testing
String 2: String
N: 4
Output: TestingString

2 2两个