具有两个 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}}};
现在它适用于多个光源。
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}}};
现在它适用于多个光源。