2012-06-22 5 views
6

this post의 단계를 수행 한 후 Eclipse (Indigo)가 unique_ptr (및 기타 C++ 11 새로운 항목)을 인식하도록했습니다. 문제는 unique_ptr에 대한 operator->이 Eclipse에서 지원되지 않는 것 같습니다. 오류 및 자동 완성 작품은 없다 : 예상대로 작동 1Eclipse에서 unique_ptr에 대한 참조 연산자가 작동하지 않음

class Foo { void bar() { /* ... */ } }; 

std::unique_ptr<Foo> foo; 
(*foo).bar(); // 1 
foo->bar(); // 2 

케이스 : 여기 당신은 예를 들어 있습니다. 그러나 2의 경우 Eclipse는 오류 ("메소드 '막대'를 확인할 수 없음)와 함께 문을 표시하고, 자동 완료는 foo->에서 작동하지 않습니다.

가장 흥미롭게도, std::shared_ptr에 문제가 없습니다. std::unique_ptr에 대해서만 발생합니다.

누구나 동일한 문제가 발생 했습니까? 누구든지 그것을 고칠 수있는 방법을 알고 있습니까?

EDIT : 위의 코드 조각에 대한 편집 과정이 명확 해졌습니다. 따라서 문제는 컴파일러 자체가 아니라 Eclipse에서 발생합니다.

+0

@dirk : 질문은 IDE에서 자동 완료 및 정적 보풀 내기입니다. 컴파일 문제에 대한 언급이 없습니다. – Rook

+0

@dirkgently g ++ 4.6을 사용하고 있으므로 컴파일이 잘됩니다. 이 문제는 Eclipse에만 영향을 미칩니다. – betabandido

+0

@Rock : 맞아. 나는 그 비트를 놓쳤다. – dirkgently

답변

0

나는 CDT에서 내가 겪고있는 바로 그 문제를 설명하는 bug report을 마침내 발견했다. 지금까지 문제에 대한 실제 수정이 아니라 그 버그 리포트에 설명 된 해결 방법이 있습니다 :

예, GCC 4.5 라이브러리 헤더가 될 수 정확하게 CDT에 의해 색인이 최신 GCC의 버전은. 4.6 헤더를 인덱싱하지 못하는 주된 이유는 CDT의 'constexpr'및 'nullptr'에 대한 의 지원이 없기 때문입니다.이 헤더는 4.6 헤더에서 광범위하게 사용됩니다 (그런데 Juno에 구현 될 가능성은?).

나는 나의 시스템에 설치되어 모두 GCC 4.5과 4.6을 가지고, 4.5의 헤더에 CDT를 지정하여이 문제를 해결 일한 (에 컴파일러 호출을 명령을 설정하여 'g ++ - 4.5'검색 옵션에서) 실제로 동안 4.6으로 컴파일하기.

0

이 문제는 최근에 cdt 8.1.1에서 수정되었습니다. help-> 업데이트 확인으로 가면 다운로드되어 설치됩니다. unique_ptr을 테스트했으며 제대로 인덱싱되었습니다.

관련 문제