小编Kai*_*Kai的帖子

通过引用调用Boost.Python:TypeError:找不到C++类型的to_python(by-value)转换器:

我正在尝试使用Boost.Python将我的C++类公开给Python.这是我正在尝试做的简化版本:

我有一个派生自boost :: noncopyable的类A和一个带有一个方法的类B,该方法将A作为参数引用.

class A : boost::noncopyable { /*...*/ };

class B {

public:

    virtual void do_something(A& a) {
        /*...*/
    }
};
Run Code Online (Sandbox Code Playgroud)

我正在公开课程如下:

/* Wrapper for B, so B can be extended in python */
struct BWrap : public B, wrapper<B> {

    void do_something(A &a) {

        if (override do_something = this->get_override("do_something")) {
            do_something(a);
            return;
        }
        else {
            B::do_something(a);
        }
    }

    void default_do_something(A& a) { this->B::do_something(a); }
};

BOOST_PYTHON_MODULE(SomeModule) {

    class_<A, boost::noncopyable>("A");

    class_<BWrap, boost::noncopyable>("B")
        .def("do_something", &B::do_something, &BWrap::default_do_something)
    ;
}
Run Code Online (Sandbox Code Playgroud)

我像这样在python中扩展B: …

c++ python boost boost-python

20
推荐指数
1
解决办法
1万
查看次数

标签 统计

boost ×1

boost-python ×1

c++ ×1

python ×1