2015-05-18 4 views
0

Сообщение об ошибке в GCC 4.9.2 является:C++ 11 вектор с двумя GLfloats в качестве пары не равномерной инициализации

could not convert from '<brace-enclosed initializer list>' to 'std::vector<std::pair<float, float> >' 

этого кода:

vector<pair<GLfloat, GLfloat>> LightOneColorsPairVec {{0.5f, 0.5f, 0.5f, 1.0f}, {0.0f, 0.0f, 1.0f, 1.0f}}; 

Код собран с 'std = C++ 11' флаг компилятора.

ответ

2

Прежде всего потому, что std::pair не имеет constructor, который принимает std::initializer_list. Во-вторых, потому что std::pair - это пара , она имеет только два значения, а не четыре.

+1

Вам не нужен конструктор 'initializer_list', чтобы использовать форматированную форму инициализации, поэтому я не уверен, что вижу, что точка первого предложения. –

0

Как Joachim Pileborg отметил пары не похожи на векторы, поэтому я преобразовал код этого:

vector<vector<vector<GLfloat>>> LightColorsVec {{{0.5f, 0.5f, 0.5f, 1.0f}, {0.0f, 0.0f, 1.0f, 1.0f}}}; 

И это работает для нескольких источников света в настоящее время.