2014-03-06 2 views
0

저는 오픈 소스 게임이지만 빌드를 시도 할 때이 오류가 계속 발생하려고합니다. 나는 아무것도 여기서 일하지와 지난 반 시간 동안 검색 한 것은 오류가오류 C2143 : 구문 오류 : ','앞에 ':'가 있습니다.

void duel::restore_assumes() { 
    for(auto pcard : assumes) 
     pcard->assume_type = 0; 
    assumes.clear(); 
} 

을 가리키는 코드이고 오류가

오류 1 오류 C2143입니다 : 구문 오류 : 실종 ',' 전에 ':'C : \ 사용자 \ 사용자 \ 바탕 \ 프로젝트 소스 \ ocgcore \ duel.cpp 표 108에 나타낸 바와 같이 1 ocgcore (비주얼 스튜디오 2010)

+2

VS2010이 C + + 11 –

+0

인데 vs2012를 사용하고 있지만 2012 년 컴파일러 – outlaw1994

답변

3

MS VC++ 2010은 C++ 2011에 도입 된 문을 기반으로하는 범위를 지원하지 않습니다. 그러나 자체 언어 확장자는 for each입니다.

봅니다 가정 또는 예를 들어 같은 일부 표준 알고리즘 그렇지 않으면 객체의 반복자와 일반 루프를 사용할 수 있습니다

void duel::restore_assumes() { 
    for each (auto pcard in assumes) 
     pcard->assume_type = 0; 
    assumes.clear(); 
} 

이 코드

void duel::restore_assumes() { 
    for(auto pcard : assumes) 
     pcard->assume_type = 0; 
    assumes.clear(); 
} 

을 변경 std::for_each

+0

이것은 완벽하게 작동 한 덕분에 vs2010으로 프로그램이 만들어 졌으므로 vs2012를 열었을 때 변환 중에 변경해야합니다 – outlaw1994

3

: C++11 Compiler Support

범위 기반 루프는 MSVC2010에서는 사용할 수 없지만 MSVC2012 (버전 11)와 함께 사용할 수 있습니다. 2010 컴파일러를 사용하면이 코드가 컴파일되지 않습니다.

컴파일러가 for 문에서 :을 기대하지 않는다는 오류 메시지가 꽤 있습니다.

+0

으로 컴파일 할 때 lib 파일을 만들지 않기 때문에 vs2012로 컴파일러가 변경되었지만 2012 컴파일러를 사용할 필요가 없습니다. generated – outlaw1994

+0

그렇다면이 문제의 또 다른 문제는이 질문의 범위에 해당되지 않을 수 있습니다. 다른 주제를 작성하고, 코드, 구성 및 관찰 된 동작을 게시하십시오. – JBL

+0

ok는 새로운 질문을 할 것입니다 – outlaw1994

-2

I 돈 C++에서 잘하지 못한다. 그래서 나는 내 대답이 옳다고 약속하지 않는다. 그러나 당신은 그것을 시도 할 수있다.

C++ "foreach"를 지원하지 않으므로 C와 같이 사용해야합니다. C#은 마음에 들지 않습니다.

+4

C++은 foreach 구문을 C++ 11 이후 지원합니다. 그리고 언어를 바꾸라고 요청하는 것은 틀 렸습니다 ... OP는이 구문상의 편의를 지원하기 위해 그의 프로젝트를 완전히 휴지통으로 만들지 않을 것입니다 ... – JBL

관련 문제