Ich habe eine C++ Klasse, die die folgenden Verfahren aufweist:boost :: Python-String-convertible Eigenschaften
class Bar {
...
const Foo& getFoo() const;
void setFoo(const Foo&);
};
wo Klasse Foo
zu std::string
umwandelbar ist (es hat einen impliziten Konstruktor von std::string
und einen std::string
Umwandlungsoperator).
Ich definiere eine Boost.Python Wrapper-Klasse, die unter anderem eine Eigenschaft auf der Grundlage früheren zwei Funktionen definiert:
class_<Bar>("Bar")
...
.add_property(
"foo",
make_function(
&Bar::getFoo,
return_value_policy<return_by_value>()),
&Bar::setFoo)
...
I markiert auch die Klasse als Cabrio zu/von std::string
.
implicitly_convertible<std::string, Foo>();
implicitly_convertible<Foo, std::string>();
aber zur Laufzeit bekomme ich noch einen Konvertierungsfehler versuchen, diese Eigenschaft zuzugreifen:
TypeError: No to_python (by-value) converter found for C++ type: Foo
Wie die Umwandlung ohne zu viel Textvorschlag von Wrapper-Funktionen zu erreichen? (Ich habe bereits alle Konvertierungsfunktionen in der Klasse Foo
, so Vervielfältigung ist unerwünscht.