2010-04-26 4 views
5

나는 C를 다음과 같은 방법을 가지고 ++ 클래스 :부스트 :: 파이썬 문자열 변환 특성

클래스 Foostd::string (이 std::string에서 암시 적 생성자와 std::string 캐스트 연산자를 가지고로 변환입니다
class Bar { 
... 
    const Foo& getFoo() const; 
    void setFoo(const Foo&); 
}; 

).

class_<Bar>("Bar") 
    ... 
    .add_property(
     "foo", 
     make_function(
      &Bar::getFoo, 
      return_value_policy<return_by_value>()), 
     &Bar::setFoo) 
    ... 

나는 또한 컨버터블/std::string에서 같은 클래스를 표시 :

나는 다른 것들 중, 앞의 두 기능에 따라 속성을 정의하는 Boost.Python 래퍼 클래스를 정의합니다.

implicitly_convertible<std::string, Foo>(); 
implicitly_convertible<Foo, std::string>(); 

그러나 런타임에 나는 아직도이 속성에 액세스하려고 변환 오류 얻을 :

TypeError: No to_python (by-value) converter found for C++ type: Foo 

방법 래퍼 함수의 너무 많은 보일러없이 변환을 달성하기를? (난 이미 클래스 Foo의 모든 변환 기능을 가지고, 그래서 중복은 바람직하지 않다.

답변