因此,我知道pybind允许您set a return value policy查找您封装的方法。然而,当我尝试在构造函数上使用此策略时,这似乎不适用于我。我有一个类来包装我的C++类型,看起来像这样:
class PyComponent{
public:
static Component* Create(ComponentType type) {
Component* c = new Component(type);
// Irrelevant stuff removed here
return c;
}
/// @brief Wrap a behavior for Python
static void PyInitialize(py::module_& m);
};
void PyComponent::PyInitialize(py::module_ & m)
{
py::class_<Component>(m, "Component")
.def(py::init<>(&PyComponent::Create), py::return_value_policy::reference)
;
}
但是,如果我调用Component()
并且创建的对象超出范围,这不会阻止我的组件类型从Python端被释放。有什么建议吗
我确实找到了解决办法。将
py::nodelete
传递给类的包装器是非常困难的相关问题 更多 >
编程相关推荐