C++ C++;错误代码E0349,C2676

C++ C++;错误代码E0349,C2676,c++,list,skybox,C++,List,Skybox,目前正在尝试使用土壤库制作skybox。然而,我得到这两个错误,不知道为什么或怎么做来修复它们。。。如果有人能提供任何帮助或建议,我们将不胜感激 GLuint textureCon; int widthX, heightY; unsigned char* imageInfo; std::list<int> faces; faces.push_back(6); glBindTexture(GL_TEXTURE_CUBE_MAP, textureCon); for (GLuint

目前正在尝试使用土壤库制作skybox。然而,我得到这两个错误,不知道为什么或怎么做来修复它们。。。如果有人能提供任何帮助或建议,我们将不胜感激

GLuint textureCon;

int widthX, heightY;
unsigned char* imageInfo;

std::list<int> faces;
faces.push_back(6);

glBindTexture(GL_TEXTURE_CUBE_MAP, textureCon);

for (GLuint i = 0; i < faces.size(); i++)
{
    imageInfo = SOIL_load_image(faces[i], &widthX, &heightY, 0, SOIL_LOAD_RGB);
    glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, GL_RGB, widthX, heightY, 0, GL_RGB, GL_UNSIGNED_BYTE, imageInfo);
}
GLuint-textureCon;
内部宽度x,高度;
无符号字符*图像信息;
列表面;
面。推回(6);
glBindTexture(GL_纹理_立方体_贴图,textureCon);
对于(GLuint i=0;i

这里我说的是
faces[I]
,这就是发生E0349错误的地方,即方括号与运算符不匹配?但我想这就是如何使用列表?
再次感谢您的帮助

我想你误解了这里的一些事情

1) push_back仅将一个元素推入容器中,例如:push_back(6)会将6个元素推入容器中,而不是您需要的6个元素


2) std::list没有定义[]运算符,它不是用于此目的的。如果您需要访问每个元素,我建议您使用std::vector,它有一个[]运算符。

请发布完整的错误消息,而不仅仅是编译器的代码号。无论如何,您只是没有阅读
std::list
的文档。它不是随机访问容器,因此
操作符[]
没有意义,因此不存在。例如,请参阅找不到
运算符[]
的位置。你可能真的想要
std::vector
,99.9999%想要容器的人也是如此,它是一个带有
操作符[]
的随机访问容器。(您可以使用迭代器和
advance
或算术或其他方法在
std::list
中的特定概念“索引”处获取该项,但您可能并不真正想要)。请以文本(可搜索)而不是png(不可搜索)的形式提供错误消息。谢谢,对!多谢了,伙计,到时候我会好好尝试一下的!Re
1)
,我相信您会在文档中看到,
std::vector
有一个构造函数,允许您使用特定的初始元素数创建它。