2010-04-26 10 views
5

Tengo una clase de C++, que tiene los siguientes métodos:impulso :: pitón propiedades de cadena convertible

class Bar { 
... 
    const Foo& getFoo() const; 
    void setFoo(const Foo&); 
}; 

donde la clase Foo se puede convertir en std::string (que tiene un constructor implícito de std::string y un operador std::string fundido)

que definen una clase contenedora Boost.Python, que, entre otras cosas, define una propiedad basada en dos funciones anteriores:

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

también me marca la clase como convertibles a/desde std::string.

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

Pero en tiempo de ejecución todavía consigo un error de conversión tratando de acceder a este inmueble:

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

cómo lograr la conversión sin demasiado repetitivo de funciones de contenedor? (Ya tengo todas las funciones de conversión de la clase Foo, por lo que la duplicación no es deseable.

Respuesta

Cuestiones relacionadas