방금 GCC 4.6.0을 컴파일 했으므로 범위 기반 for 루프부터 시작하여 새로운 기능을 사용하려고했습니다.
내가 바꾸고 싶은 첫 번째 루프는 포인터의 벡터를 반복하는 것이 었습니다. 새로운 구문을 사용하도록 코드를 변경했지만 컴파일되지 않았습니다.포인터의 벡터에서 C++ 11 범위 기반을 사용하는 경우
다른 루프를 대체하려고했습니다. 구조체의 std :: vector에 있었고 컴파일되어 완벽하게 실행되었습니다.
여기 당신이 내 문제를 보여주기 위해 간단한 테스트 코드입니다 : 내가 (g ++에 매개 변수로 그래, 난 줄 -std = C + +0)이 를 컴파일 할 때
#include <vector>
#include <iostream>
int main()
{
std::vector<int> values;
values.push_back(2);
values.push_back(5);
values.push_back(8);
values.push_back(13);
values.push_back(17);
for (int &n : values)
{
std::cout << n << "\n";
}
std::vector< int* > pointers;
pointers.push_back(new int(2));
pointers.push_back(new int(5));
pointers.push_back(new int(8));
pointers.push_back(new int(13));
pointers.push_back(new int(17));
for ((int*) &p : values)
{
std::cout << (*p) << "\n";
}
for(unsigned int i = 0; i < pointers.size(); ++i)
{
delete pointers[i];
}
return 0;
}
을, 이 오류로 사망합니다.
main.cpp|27|error: found ‘:’ in nested-name-specifier, expected ‘::’
27-30 행을 주석 처리하면 정상입니다.
내가 뭘 잘못하고 있니? 포인터 참조가 구문을 올바르게 선언하지 않습니까?
범위 기반 for 루프를 사용할 수있는 포함 된 유형의 제한이 있습니까?
도움 주셔서 감사합니다.
proba해야을 콩을 SO –
@Doug로 옮길 것 : 동의했다. ... 작은 URL을 가지고있는 것보다 소스 코드를 포함시키는 것이 도움이 될 것이다. – jprete