具有两个 GLfloats 作为对的 C++11 向量无法统一初始化

C++11 vector with two GLfloats as pair fail to uniform initialize

gcc 4.9.2的错误信息是:

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' 编译器标志编译的。

首先是因为std::pair doesn't have constructor that takes a std::initializer_list。其次因为 std::pair 是一个 ,它只有两个值,而不是四个。

正如 Joachim Pileborg 指出的对与向量不相似,所以我将代码转换为:

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

现在它适用于多个光源。