Вы обычно инициализируете его с помощью { ... }
:
Player player = {
vector<float>(xcords,xcords + (sizeof(xcords) / sizeof(float)) ),
vector<float>(ycords,ycords + (sizeof(ycords) / sizeof(float)) ),
5, 1, 5, 1, 5, 1, 5, 1,
1.0f,1.0f,1.0f, //red, green, blue
0.0f,0.0f, //r_leg,l_leg
{4,4,4}, //number points per polygon
true,false
};
Теперь, это использует "скобка elision". Некоторые компиляторы предупреждают об этом, хотя это полностью стандартно, потому что это может запутать читателей. Лучше добавить фигурные скобки, чтобы стало понятно, что инициализируется где:
Player player = {
vector<float>(xcords,xcords + (sizeof(xcords) / sizeof(float)) ),
vector<float>(ycords,ycords + (sizeof(ycords) / sizeof(float)) ),
{ { 5, 1 }, { 5, 1 }, { 5, 1 }, { 5, 1 } },
1.0f, 1.0f, 1.0f, //red, green, blue
0.0f, 0.0f, //r_leg,l_leg
{ 4, 4, 4 }, //number points per polygon
true, false
};
Если вы хотите только инициализировать x
член точек, вы можете сделать это, пропустив другой инициализатор. Остальные элементы в агрегатах (массивы, структуры) будут иметь значение, инициализированное «правильными» значениями - так, NULL
для указателей, false
для bool, ноль для целых и т. Д. И использование конструктора для определенного пользователем типа, примерно. Строка, инициализирующая точки, выглядит следующим образом
{ { 5 }, { 5 }, { 5 }, { 5 } },
Теперь вы могли видеть опасность использования скобки. Если вы добавите какой-либо элемент в свою структуру, все инициализаторы «сместятся» по своим фактическим элементам, которые они должны инициализировать, и они могут случайно попасть в другие элементы. Так что лучше всегда используйте брекеты, где это уместно.
Рассмотрите возможность использования конструкторов. Я только что завершил ваш код, показывающий, как вы будете это делать, используя инициализаторы в скобках.