Отображение указателя в 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?
Я понимаю, что должен использовать инкапсуляцию, но в настоящее время я придерживаюсь необходимости решения без инкапсуляции.
Ответы
Ответ 1
Конечно, я нахожу ответ через десять минут после того, как задаю вопрос... вот как это делается:
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>()))
;