私はC++オブジェクトを作成する関数を持っています。リファクタリングの前に、私はC++関数からポインタを返していました。そして、boost python wrapper 宣言には、boost::python::return_value_policy<boost::python::manage_new_object>
を使用します。このような何か:boost pythonでタプルの一部として返されるオブジェクトの返品ポリシーを指定する方法
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);
}
この変更で返品方針をどのように指定する必要がありますか?
私はスマートポインタを使用して終了し、この問題について心配しなくなりました。 –
スマートポインタを使用してください。それも動作します。 :-) –