在Boost.Python中公开指针

时间:2010-03-29 21:34:41

标签: c++ python boost boost-python

我有这个非常简单的C ++类:

class Tree {
    public:
        Node *head;
};
BOOST_PYTHON_MODULE(myModule)
{

   class_<Tree>("Tree")
        .def_readwrite("head",&Tree::head)
    ;

}

我想从Python访问head变量,但我看到的消息是:

No to_python (by-value) converter found for C++ type: Node*

根据我的理解,这种情况发生是因为Python没有指针,因为它没有指针的概念。如何从Python访问head变量?

我知道我应该使用封装,但我目前仍然需要非封装解决方案。

1 个答案:

答案 0 :(得分:20)

当然,在提出问题后十分钟我找到了答案......这是如何完成的:

class_<Tree>("Tree")
    .add_property("head",
     make_getter(&Tree::head, return_value_policy<reference_existing_object>()),
     make_setter(&Tree::head, return_value_policy<reference_existing_object>()))
;