【发布时间】:2019-05-07 07:57:52
【问题描述】:
我尝试绑定一个静态函数,该函数返回指向另一个类的 shared_ptr。
这里是示例代码
class Example {
public:
Example() {}
~Example() {}
};
class ABC {
public:
static std::shared_ptr<Example> get_example() {std::make_shared<Example();}
};
void init_abc(py::module & m) {
py::class_<Example>(m, "Example")
.def(py::init<>());
py::class_<ABC>(m, "ABC")
.def_static("get_example", &ABC::get_example);
}
这里是python的一面
example = my_module.ABC.get_example()
但是,python 端抛出了分段错误。
有什么想法吗?
【问题讨论】:
-
我不知道pybind11是否支持
shared_ptr,如果不支持,您可以随时尝试使用.get()返回实际指针。在 Python 端返回shared_ptr或实际的pointer并不一定重要,因为shared_ptr无论如何都是由 C++ 管理的。如果可以解决问题,我认为使用.get()应该是安全的。