ale*_*.tu 5 c++ python pybind11
我尝试绑定一个静态函数,该函数返回指向另一个类的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);
}
Run Code Online (Sandbox Code Playgroud)
这是Python的一面
example = my_module.ABC.get_example()
Run Code Online (Sandbox Code Playgroud)
然而,python 端抛出了分段错误。
任何想法?
您的代码中缺少一些位,例如>. 这是工作示例:
class Example {
public:
Example() {}
~Example() {}
};
class ABC {
public:
static std::shared_ptr<Example> get_example() { return std::make_shared<Example>();}
};
Run Code Online (Sandbox Code Playgroud)
shared_ptr<Example>接下来,在包装类的地方提供额外的模板参数Example:
py::class_<Example, std::shared_ptr<Example>>(m, "Example")
.def(py::init<>());
py::class_<ABC>(m, "ABC")
.def_static("get_example", &ABC::get_example);
Run Code Online (Sandbox Code Playgroud)
这样的话shared_ptr<Example>就可以妥善处理了。
| 归档时间: |
|
| 查看次数: |
1865 次 |
| 最近记录: |