Ale*_*x B 5 c++ python boost boost-python
我有一个C++类,它有以下方法:
class Bar {
...
const Foo& getFoo() const;
void setFoo(const Foo&);
};
Run Code Online (Sandbox Code Playgroud)
class Foo可以转换为std::string(它有一个隐式构造函数std::string和一个std::string强制转换运算符).
我定义了一个Boost.Python包装类,除其他外,它基于前两个函数定义一个属性:
class_<Bar>("Bar")
...
.add_property(
"foo",
make_function(
&Bar::getFoo,
return_value_policy<return_by_value>()),
&Bar::setFoo)
...
Run Code Online (Sandbox Code Playgroud)
我还将该类标记为可转换为/来自std::string.
implicitly_convertible<std::string, Foo>();
implicitly_convertible<Foo, std::string>();
Run Code Online (Sandbox Code Playgroud)
但在运行时,我仍然遇到尝试访问此属性的转换错误:
TypeError: No to_python (by-value) converter found for C++ type: Foo
Run Code Online (Sandbox Code Playgroud)
如何在没有太多包装函数的样板的情况下实现转换?(我已经在课堂上拥有所有转换功能Foo,因此不希望重复.