我的类有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
任何建议都表示赞赏。
答案 0 :(得分:1)
我一起乱七八糟的东西。 Bur我意识到我不需要使用BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS,而是命名参数如下:
def("method", &A::method, (arg("par1"), arg("par2") = false))