Проблема pybind11 bad_alloc с std :: vector - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть такие структуры:

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()

К сожалению, яget

MemoryError: std :: bad_alloc

Пожалуйста, помогите мне.Код выше не является кодом, с которым я работаю.Класс A работает сам по себе, но не работает при итерации по B. Если этого кода недостаточно, напишите в комментариях.Спасибо!

1 Ответ

0 голосов
/ 01 декабря 2018

Я узнал, что случилось.Это сложнее, чем я написал, потому что я использую перегрузку и вызываю виртуальный метод из родительского класса, который вызывает дочерний виртуальный метод - pybind11 не может обработать это поведение.У меня это исправлено.Если у вас есть ошибки в PYBIND11_OVERLOAD со сложной структурой класса - напишите комментарий или напишите мне - я думаю, что смогу помочь

...