2017-12-27 5 views
-1

현재 토양 lib를 사용하여 스카이 박스를 만들려고합니다. 그러나, 나는이 2 개의 과실을 얻고 아무 아이디어도 그 (것)들을 고치기 위하여해야하지 않는다 ... 누군가가 어떤 도움 또는 제안든지 제안 할 수 있던 경우에 중대하게 평가 될 것입니다!C++ 오류 코드 E0349, C2676

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); 
} 

Error message

나는 E0349 오류가 대괄호 운영자 일치하지 않는 것을 말하는 발생하는 위치입니다 faces[i]를 말하는거야? 그러나 목록을 사용하는 방법이라고 생각했습니다. 도움을 주셔서 다시 한 번 감사드립니다!

+0

컴파일러의 코드 번호뿐만 아니라 전체 오류 메시지를 게시하십시오. –

+3

어쨌든'std :: list'에 대한 문서를 읽지 않았습니다. 무작위 액세스 컨테이너가 아니므로'operator []'는 의미가 없으므로 존재하지 않습니다. 예 : http://en.cppreference.com/w/cpp/container/list 여기서 operator []를 찾을 수 없습니다. 컨테이너를 원하는 사람들의 99.9999 %가'std :: vector'를 원할 것이고, operator *가있는 랜덤 액세스 컨테이너 일 것입니다. (iterator와'advance' 나 산술 등을 사용하여'std :: list '에서 특정 개념의'index '에있는 항목을 얻을 수는 있지만, 실제로 원하지는 않을 것입니다.) –

+1

오류 메시지를 다음과 같이 제공하십시오. 텍스트 (검색 가능)이며 png가 아닙니다 (검색 가능하지 않음). 감사합니다 –

답변

1

여기 몇 가지 잘못 이해했다고 생각합니다.

1) push_back은 컨테이너에 하나의 요소 만 푸시합니다. 예 : push_back (6)은 필요한대로 6 개 요소가 아닌 6 개를 컨테이너로 푸시합니다.

2) std :: list do [t] 연산자가 정의되어 있지 않습니다.이 연산자는 의미가 없습니다. 각 요소에 액세스해야하는 경우 대신 [] 연산자가있는 std :: vector를 사용하는 것이 좋습니다.

+0

아 맞아! 고마워, 메이트, 병이 그때 그 일을하고있어! –

+0

Re'1'', 문서에서 볼 수 있듯이'std :: vector'는 생성자를 사용하여 특정 수의 요소로 생성자를 생성 할 수 있습니다. –