C++オブジェクトを作成する関数があります。リファクタリングの前は、C ++関数からポインターを返していましたが、boost pythonラッパー宣言では、を使用してい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);
}
この変更で返品ポリシーをどのように指定する必要がありますか?