boost :: python将对象的所有权移动到C ++端

时间:2014-12-21 12:53:29

标签: python memory-management boost boost-python ownership

我在C ++方面有一个纯虚基类,应该在python方面进行扩展。 例如: C ++方面:

class Base {
public:
    virtual void Foo() = 0;
}

class BaseWrapper : public Base, public boost::python::wrapper<Base> {
public:
    void Foo() { this->get_override("Foo")(); }
}

BOOST_PYTHON_MODULE(libmy_cpp_pro) {
    class_<BaseWrapper, boost::noncopyable>("Base").def("Foo", pure_virtual(&BaseWrapper::Foo));
}

Python方面:

import libmy_cpp_pro.so

class Derived(libmy_cpp_pro.Base):
    Foo(self):
        print "770"

此外,我在C ++方面获得了一个获得Base *并且需要处理对象的函数 - 它获得了对它的完全所有权。例如:

void Bar(Base* obj) {
    objList.push_back(obj)
}

现在,我有一个用于Bar()的python-API,我想以只有C ++方面处理它们的方式传递Derived-instances。

我该怎么做?

0 个答案:

没有答案