小编Geo*_*a S的帖子

PyBind11:访问 Python 中的唯一指针属性

我有一个 C++ 类,它有一个指向对象的唯一指针作为属性。我希望能够在 Python 中访问该属性,以便我可以调用它的类方法。这是我的设置示例:

\n
class OuterClass {\npublic:\n   std::unique_ptr<InnerClass> obj;\n}\n\nclass InnerClass {\npublic:\n    void method();\n}\n
Run Code Online (Sandbox Code Playgroud)\n

以及 pybind11 绑定:

\n
PYBIND11_MODULE(example, m) {\n    py::class_<InnerClass>(m, "InnerClass")\n        .def("method", &InnerClass::method);\n\n    py::class_<OuterClass>(m, "OuterClass")\n        .def_readonly("obj", &OuterClass::obj);\n}\n
Run Code Online (Sandbox Code Playgroud)\n

但是,这无法编译并出现错误 error: no matching function for call to \xe2\x80\x98pybind11::cpp_function::cpp_function(std::unique_ptr<InnerClass> OuterClass::*, pybind11::name, pybind11::is_method, pybind11::sibling)

\n

我希望能够在 python 中做到这一点:

\n
outer_obj.obj.method()\n
Run Code Online (Sandbox Code Playgroud)\n

unique ptr 的文档似乎并不认为这应该是一个问题,因为它们给出了返回唯一 ptr 的函数的示例。尝试访问唯一的 ptr 属性是否有问题?我该如何解决这个问题?

\n

c++ pybind11

3
推荐指数
1
解决办法
1009
查看次数

标签 统计

c++ ×1

pybind11 ×1