J'ai une classe C++, qui a les méthodes suivantes:boost :: python propriétés convertibles chaîne
class Bar {
...
const Foo& getFoo() const;
void setFoo(const Foo&);
};
où la classe Foo
est convertible en std::string
(il a un constructeur implicite de std::string
et un opérateur coulé std::string
).
Je définit une classe wrapper Boost.Python, qui, entre autres, définit une propriété en fonction de deux fonctions précédentes:
class_<Bar>("Bar")
...
.add_property(
"foo",
make_function(
&Bar::getFoo,
return_value_policy<return_by_value>()),
&Bar::setFoo)
...
Je marque aussi la classe convertible/de std::string
.
implicitly_convertible<std::string, Foo>();
implicitly_convertible<Foo, std::string>();
Mais lors de l'exécution, je reçois encore une erreur de conversion en essayant d'accéder à cette propriété:
TypeError: No to_python (by-value) converter found for C++ type: Foo
Comment réaliser la conversion sans trop de boilerplate fonctions wrapper? (Je l'ai déjà toutes les fonctions de conversion en classe Foo
, donc double emploi est indésirable.