Search code examples
c++c++11vectorstructinitializer-list

Initializing struct vector with brace-enclosed initializer list


I initialize normal-type vectors like this:

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

But when I use structure instead of normal-type

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}};

I get error 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>'. What's wrong with this?


Solution

  • A set of {} is missing:

    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}
        }
    };