다양한 이유로 (그리고 나는 그들이 "코코아를 사용하십시오"라고 말하지 않기 때문에) 유효합니다. Xcode, C++, OpenGL, OpenCL, 약간의 그래픽 데모를 재구성하기위한 OpenCL, Mac (XP + Visual Studio 2005 개발에서 제공). 프로젝트는 "C++ stdC++"를 사용하여 명령 행 도구로 빌드되었습니다.XCode + C++에서 std :: vector를 어떻게 사용합니까?
내 Program.h 파일은 내 쉐이더 객체를 연결하고, 컴파일하고, 링크하고, OpenGL 쉐이더 프로그램으로 사용할 수 있도록 준비합니다.
#include <vector>
using std::vector;
및 클래스의 개인 섹션 내 : 코드의 관련 라인을 따르고 있습니다이 파일에 포함 된
vector<int> shaderHandles;
및 쉐이더를 추가 할 때 처리 : 마지막으로
shaderHandles.push_back(shaderHandle);
과 , 밀어 넣은 셰이더 핸들을 사용할 때 :
for (int s = 0; s < (int) shaderHandles.size(); s++)
{
glAttachShader(handle, shaderHandles[s]);
}
내 모든 경험과 연구에서 C++ 내에서 이러한 행에는 아무런 문제가 없습니다. (여부를 디버그 또는이 _GLIBCXX_DEBUG
문제와 관련이없는, 그래서 해제) 컴파일 할 때, 다음의 4 가지 오류가 생성됩니다 또한
/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/bits/stl_bvector.h:916: error: 'size' is not a member of 'std'
/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/bits/stl_bvector.h:961: error: 'size' is not a member of 'std'
/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/bits/vector.tcc:350: error: '__old_size' is not a member of 'std'
/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/bits/vector.tcc:453: error: '__old_size' is not a member of 'std'
, stl_bvector.h을 연결하고 vector.tcc는 파일 :
/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/vector
지금까지 수많은 Google 검색 결과가 없었습니다. 이 코드는 모두 Windows에서 완벽하게 작동합니다. 더 나쁜, 나는 목록 등가물과 함께 위의 코드 교체 할 경우 :
#include <list>
using std::list;
하고,
list<int> shaderHandles;
하고, 예상대로 프로그램이 작동
for (list<int>::iterator s = shaderHandles.begin(); s != shaderHandles.end(); s++)
{
glAttachShader(handle, *s);
}
합니다. 아무런 문제
#include <iostream>
#include <vector>
using std::vector;
int main (int argc, char * const argv[])
{
vector<int> test;
test.push_back(1);
test.push_back(2);
test.push_back(3);
test.clear();
return 0;
}
작품 :
그러나 사람은 다음 이유로 인해 프로그램, 벡터 구현에 전적을 비난 할 수 없다.
필요에 따라 더 자세한 정보를 제공해 드리겠습니다.
제발 코코아/Objective-C를 사용해야한다고 말하지 마십시오. 지금은 실제로 옵션이 아닙니다. 그리고 예, 목록을 사용하여이 기능을 수행 할 수는 있지만 데모의 다른 부분은 재 작업하기가 쉽지 않습니다.
빠른 응답을 보내 주셔서 감사합니다. 아니요, Mac SDK 설명서를 확인하지 않았습니다. 나는이 코드를 조금 읽었고 평범한 것을 발견하지 못했다. 컴파일러 플래그가 없습니다. 예, 할 수는 있지만 C는 제 첫 번째 언어이므로 구문을 배열하는 데 더 익숙합니다. 솔직히 말해서 반복기 항목은 모두 입력하기가 너무 어렵습니다. 감사 합니다만, 나는 그 전에 시간을 보냈음에도 불구하고 질문을 한 후 몇 분 후에 그것을 생각했습니다. – Dwight