2013-08-21 8 views
9

I initialisieren Normaltyp Vektoren wie folgt aus:Initialisierung Struktur Vektor mit geschweiften Klammern stehenden Initialisiererliste

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

Aber wenn ich Struktur anstelle von normalen Typs

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

ich Fehler 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>'. Was ist daran falsch?

Antwort

16

Eine Reihe von {} fehlt:

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

benötigen Sie eine weitere {} tatsächlich

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

ein '{' für Vektor, eine für struct, ein (paar) für struct Mitglied-Arrays ...