У меня есть два класса C ++, которые, например, предполагают, что
class A
{
};
class B
{
};
Затем я обертываю их SWIG для создания привязок Python
%include "A.h"
%include "B.h"
...etc
На стороне Python я использую их как
a = A()
b = B()
Я хотел бы каким-то образом обеспечить, чтобы порядок уничтожения был ~B()
, а затем ~A()
. Если они вызываются в другом порядке, ~B()
будет зависать из-за висячих указателей.
Можно ли как-то изменить интерфейс SWIG, чтобы сначала принудительно уничтожить B
? Как только разрешить его использование в диспетчере контекста? Добавить ссылку на объект A
? Возьмите аргумент A
в конструкторе B
и добавьте инкремент к его счетчику ссылок?