2010-04-26 17 views
5

Bir C var aşağıdaki yöntemleri vardır ++ sınıfı,:boost :: piton sicim-konvertibl özellikleri

sınıf Foo std::string (o std::string bir örtük yapıcı ve std::string döküm operatörü vardır dönüştürülebilen
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) 
    ... 

Ayrıca dönüştürülebilir için/std::string itibaren sınıf işareti:

diğer şeylerin yanı sıra, son iki fonksiyonlarına göre bir özelliğini tanımlayan bir Boost.Python sarmalayıcı sınıf, tanımlar.

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

Ama zamanında hala bu özelliği erişmeye çalışan bir dönüşüm hatası alıyorum:

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

Nasıl sarıcı fonksiyonlarının çok fazla boilerplate olmadan dönüşüm elde etmek için? (Zaten sınıfta Foo tüm dönüşüm işlevleri var, bu yüzden çoğaltılması istenmeyen bir durumdur.

cevap