with initialize empty argument c++ c++11 vector struct initializer-list

c++ - initialize - Inicializando el vector struct con la lista de inicializadores incluidos



initialize vector c++ (2)

Inicializo vectores de tipo normal como este:

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

Pero cuando uso estructura en lugar de tipo normal

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

Me sale un 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>'' . ¿Qué pasa con esto?


Falta un conjunto de {} :

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


necesitas uno más {} en realidad

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

one ''{'' para vector, uno para struct, one (couple of) para struct member-arrays ...