2013-08-21 12 views
9

zainicjować normalnego typu wektory tak:Inicjowanie struct wektor z Brace-załączonej listy inicjatora

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

Ale gdy używam strukturę zamiast normalnego typu

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

otrzymuję błąd 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>'. Co jest z tym nie tak?

Odpowiedz

16

Zestaw {} brakuje:

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

trzeba jeszcze {} faktycznie

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

jeden '{' dla wektora, po jednym dla struktury, jeden (para) dla struct z członków-tablic ...