2010-03-29 69 views
12

露出指针我有这个非常简单的C++类:在Boost.Python的

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

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

} 

我要访问在Python头变量,但我看到的消息是:

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

从我的理解是,这是因为Python因为没有指针的概念而吓坏了。我如何从Python访问头部变量?

我明白我应该使用封装,但我目前坚持需要一个非封装的解决方案。

回答

20

当然,我找到了答案10分钟问这个问题后......这里是它是如何做:

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>())) 
; 
+0

这听起来并不正确。很可能你想要'return_internal_reference'。 – elmo 2014-05-14 15:00:16