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