我有这样的结构:
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时无效。如果此代码不够用,请在注释中写。谢谢!
答案 0 :(得分:0)
我发现出了什么问题。它比我发布的还要复杂,因为我使用重载,并且我从调用子虚拟方法的父类中调用虚拟方法-pybind11无法处理此行为。我修好了。如果您在具有复杂的类结构的PYBIND11_OVERLOAD周围遇到错误-写评论或给我发邮件-我相信我可以帮忙