2013-08-21 71 views
9

tôi khởi vectơ bình thường kiểu như thế này:Khởi tạo vector struct với cú đúp kín danh sách initializer

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

Nhưng khi tôi sử dụng cấu trúc thay vì bình thường kiểu

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

tôi nhận được lỗi 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>'. Chuyện gì thế này?

Trả lời

16

Một tập hợp các {} bị thiếu:

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

bạn cần thêm một {} thực

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

một '{' cho vector, một cho struct, một (vài) cho struct thành viên mảng ...

Các vấn đề liên quan