两个glfloat为对的c++ 11向量初始化失败

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

本文关键字:向量 初始化 失败 c++ glfloat 两个      更新时间:2023-10-16

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没有接受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}}};