pybind11 bad_alloc问题与std :: vector <std :: shared_ptr <a >>

时间:2018-11-30 17:40:24

标签: python c++ bad-alloc pybind11

我有这样的结构:

struct A{
  void do_stuff(){...does stuff};
}
struct B{
  std::vector<std::shared_ptr<A>> objs;
}

我的pybind:

py::class_<A>(m, "A")
  .def("do_stuff", &A::do_stuff)
py::class_<B>(m, "B")
  .def_readwrite("objs", &B::objs);

我要达到的行为:

import mybind

b_instance = mybind.B()

for a_instance in b_instance:
  a_instance.do_stuff()

不幸的是,我得到

  

MemoryError:std :: bad_alloc

请帮帮我。 上面的代码实际上不是我使用的代码。类A本身起作用,但在遍历B时无效。如果此代码不够用,请在注释中写。谢谢!

1 个答案:

答案 0 :(得分:0)

我发现出了什么问题。它比我发布的还要复杂,因为我使用重载,并且我从调用子虚拟方法的父类中调用虚拟方法-pybind11无法处理此行为。我修好了。如果您在具有复杂的类结构的PYBIND11_OVERLOAD周围遇到错误-写评论或给我发邮件-我相信我可以帮忙