具有void返回类型和可选参数的方法的Return_value_policy

时间:2014-07-25 12:08:33

标签: boost-python

我的类有void方法和可选参数,如下所示:

class A
{
public:
    void method(int par1, bool par2 = false) { ... }
};

BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(method, A::method, 1, 2)
class_<A>("A")
  .def("method", &A::method, return_value_policy<reference_existing_object>(),method())
;

在这种情况下,return_value_policy是什么?我已经尝试完全避免退货政策,但是当时我收到了以下编译错误。

'boost::mpl::vector17<RT,most_derived<Target,ClassT>::type&,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14> boost::python::detail::get_signature(RT (__cdecl ClassT::* )(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14) volatile const,Target *)' : expects 2 arguments - 1 provided

任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:1)

我一起乱七八糟的东西。 Bur我意识到我不需要使用BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS,而是命名参数如下:

def("method", &A::method, (arg("par1"), arg("par2") = false))