11

私はこの非常に単純な 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 変数にアクセスするにはどうすればよいですか?

カプセル化を使用する必要があることは理解していますが、現在、カプセル化以外のソリューションが必要です。

4

1 に答える 1

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>()))
;
于 2010-03-29T21:55:41.983 に答える