У меня есть функция, которая создает объект C ++. Перед рефакторингом я возвращал указатель из функции C ++, и в обёртке python boost объявление я бы использовал boost::python::return_value_policy<boost::python::manage_new_object>
. Примерно так:
MyObject* create_object_from_description(std::string& description)
{
...
return myObject;
}
BOOST_PYTHON_MODULE(pymol) {
boost::python::def("create_obj_from_desc", create_object_from_description,
(boost::python::arg("description")),
"",
boost::python::return_value_policy<boost::python::manage_new_object>()
);
Теперь мне нужно вернуть больше, чем просто объект, но также и некоторые сообщения об ошибках, и рефактор в основном меняет функцию C ++, чтобы она возвращала кортеж:
boost::python::tuple create_object_from_description(std::string& description)
{
...
return boost::python::make_tuple(myObject, errmsg);
}
Как мне указать политику возврата с этим изменением?