2010-03-29 21 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