ho una classe C++, che ha i seguenti metodi:boost :: python proprietà di stringa convertibile
class Bar {
...
const Foo& getFoo() const;
void setFoo(const Foo&);
};
dove la classe Foo
è convertibile in std::string
(ha un costruttore implicita da std::string
ed un operatore std::string
getto).
mi definiscono una classe wrapper Boost.Python, che, tra le altre cose, definisce una proprietà sulla base di precedenti due funzioni:
class_<Bar>("Bar")
...
.add_property(
"foo",
make_function(
&Bar::getFoo,
return_value_policy<return_by_value>()),
&Bar::setFoo)
...
ho marchio anche la classe come convertibile da/per std::string
.
implicitly_convertible<std::string, Foo>();
implicitly_convertible<Foo, std::string>();
Ma in fase di esecuzione ho ancora un errore di conversione tentativo di accedere a questa proprietà:
TypeError: No to_python (by-value) converter found for C++ type: Foo
Come ottenere la conversione senza troppo boilerplate delle funzioni wrapper? (Ho già tutte le funzioni di conversione in classe Foo
, quindi la duplicazione è indesiderabile.