boost :: python string-convertible属性

时间:2010-04-26 06:17:23

标签: c++ python boost boost-python

我有一个C ++类,它有以下几种方法:

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

其中,类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)
    ...

我还将该类标记为可转换为/ std::string

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

但是在运行时,我仍然在尝试访问此属性时遇到转换错误:

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

如何在没有太多包装函数的样板的情况下实现转换? (我已经在类Foo中拥有所有转换函数,因此不希望重复。

1 个答案:

答案 0 :(得分:2)

我最终放弃并实现了与custom string class conversion example in Boost.Python FAQ类似的东西,这有点冗长,但与宣传的一样。