2013-05-16 2 views
1

코드가 있는데 cygwin 환경에서 빌드 할 때 관련 오류가 발생합니다. [&] [&]의 의미는 무엇입니까? 이 문제를 어떻게 해결할 수 있습니까? 아니면 문제를 해결하기 위해 교체해야합니까?C++의 연산자 [&]

코드 :

this->func =[&]() 
{ in here call other functions } 
+1

g ++의 어떤 버전을 사용하고 싶습니까? –

+0

왜 그것이 downvoted인지 모르겠습니다. 운영자에게'[&]'를 잘못 입력하면 인터넷 검색이 도움이되지 않습니다. – MSalters

+1

질문을 약간 형식화했으나 SO 기준에 의해 여전히 "진짜 질문이 아닙니다"라고 인정합니다. 조금 더 많은 컨텍스트와 실제 코드, 정확한 오류 메시지, 컴파일러 버전 등을 제공하여 문제를 해결하십시오. – jrok

답변

3

[&]{ /*function calls*/ }

이것은 다른 함수를 호출하는 기능 개체 (폐쇄)를 생성하는 C++ 11 람다 식이다. [&]은 람다 식을 캡쳐 한 것으로, 클로저는 람다 식 외부의 모든 변수를 참조로 사용할 수 있습니다. 현재 C++ 11 서적이나 람다에 대한 기사를 읽으십시오.

문제를 해결하려면 -std=c++0x을 컴파일러 인수로 전달하십시오. 작동하지 않는 경우 현재 컴파일러로 업그레이드 (~ 2 년 이상 경과)되거나 함수 개체를 수동으로 만드십시오. 그렇게하는 방법은 lambdas를 이해하고 나면 사소 할 것입니다. 그러나 컴파일하려는 코드가 람다를 사용하는 경우 C++ 11 기능이 아닐 수도 있으므로 컴파일러 업그레이드를 강력히 권장합니다.

+0

정확히 오류 및 경고 "경고 : 람다 식은 -std = C++ 11 또는 -std = gnu ++ 11 [기본값으로 활성화 됨]"에서만 사용할 수 있습니다 ... ... 나는 영구적으로 업그레이드를 시도 할 것입니다! – Ana

+0

어떤 사이트를 업그레이드 하시겠습니까? – Ana

+2

gcc 3.4.4가 gcc 4.7에 도입 된 명령 행 매개 변수에 대해 알려줄지 궁금합니다. –

4

[capture-list](arguments){function-body} 구문은 C++ 11 람다이다. 상당히 최근의 컴파일러가 필요하며 아마도 추가 컴파일러 플래그를 전달할 수 있습니다.

+0

ok ... 나는 그것을 시도 할 것이다. 대단히 고맙습니다. – Ana