使用默认参数包装方法,该参数是指向另一个包装类型的空指针
Wrapping method with default argument that is a null pointer to another wrapped type
考虑以下 C++ 代码:
struct A { };
struct B {
void f(A *a = nullptr) const;
};
如何使用 boost::python
正确包装它?特别是默认参数。以下惨败1:
bpy::class_<B>
// Explicitly converting the nullptr to A* does not solve this:
.def("f", &B::f, bpy::arg("a") = nullptr);
1 “惨败”,我的意思是我只得到一个“SystemError: initialization of xxx导入模块时引发未报告的异常"*。
最后,这非常……简单。只需要将空指针包装在 bpy::ptr
:
bpy::class_<B>
// The cast to A* is mandatory otherwise bpy::ptr cannot deduce the type:
.def("f", &B::f, bpy::arg("a") = bpy::ptr((A*)nullptr));
考虑以下 C++ 代码:
struct A { };
struct B {
void f(A *a = nullptr) const;
};
如何使用 boost::python
正确包装它?特别是默认参数。以下惨败1:
bpy::class_<B>
// Explicitly converting the nullptr to A* does not solve this:
.def("f", &B::f, bpy::arg("a") = nullptr);
1 “惨败”,我的意思是我只得到一个“SystemError: initialization of xxx导入模块时引发未报告的异常"*。
最后,这非常……简单。只需要将空指针包装在 bpy::ptr
:
bpy::class_<B>
// The cast to A* is mandatory otherwise bpy::ptr cannot deduce the type:
.def("f", &B::f, bpy::arg("a") = bpy::ptr((A*)nullptr));