2013-07-19 3 views
0

는 좀 부스트 :: 파이썬 코드를 컴파일, 그리고 난이 오류를 이해하지 않습니다... 함수 배열로 선언 하시겠습니까?

error: declaration of 't' as array of functions 

같은를 작성하는 적절한 방법은 무엇입니까 : GCC 4.7, -std=gnu++0x

namespace py=boost::python; 
void func(py::tuple& t){ 
    /* ... */ 
    vector<shared_ptr<SomeClass>> vf=py::extract<vector<shared_ptr<SomeClass>>>(t[0])(); 
    /* ... */ 
} 

? py::extract<>(...)()가 올바른 표현이다 - 공백 최종 템플릿 브래킷을 분리

+0

기능에 * 포인터 * 배열을 사용할 수 있습니다. 배열에는 함수를 사용할 수 없습니다. –

+0

'='기호를 잘못 입력하지 않았습니까? –

+0

만약'SomeType (t [0])();'이 도움이된다면 인자가없고'SomeType'을 반환하는 함수 길이가 0 인 배열을't'라고 선언 할 것입니다. 그러나 어떻게 코드를 구문 분석 할 수 있는지 알 수 없습니다. 아 잠깐, 아마도 ... –

답변

0

시도 :

vector<shared_ptr<SomeClass> > vf=py::extract<vector<shared_ptr<SomeClass> > >(t[0])(); 
//      ^           ^^ 

C++ (11) 수정이,하지만 난 당신의 컴파일러 버전이 수정 프로그램이 있는지 확실하지 않습니다. 'C++ 03에서

, 당신의 코드는 >> 사업자 bitshift 포함하는 것으로 해석 될 다음 전체 덩어리 vector<shared_ptr<SomeClass>> vf=py::extract<vector<shared_ptr<SomeClass>>> 어떻게 든 아무튼 따라서 함수 반환 유형 (지금 = 템플릿 인수 안에 대한 오해, 그리고 수 t는 복사 초기화를 나타냄).

+0

이것이 올바른 것으로 밝혀지면 ** 와우 **입니다. – Xeo

+0

아니요, gcc 4.7은'>>>'에 문제가 없습니다. '= '는 템플릿 인수 안에 들어 있지 않습니다. – eudoxos