Как обернуть объект c ++ с boost.Python, чтобы Python никогда не вызывал его деструктором автоматически - PullRequest
0 голосов
/ 02 мая 2011

Например, у меня есть класс C ++ "A" и класс Python "B". Класс "A" упакован в boost :: python, поэтому я могу использовать его в своем коде на python. Класс "B" имеет член типа "A", я создаю его в конструкторе "B". Когда я удаляю свой объект класса "B", он автоматически вызывает деструктор "A" в C ++. Я хочу избежать этого вызова, так что «B» не будет отвечать за своего члена «A» (то есть обернутый объект C ++). Итак, я хочу удалить свой объект «B», и в памяти все еще остается «A».

1 Ответ

0 голосов
/ 02 мая 2011

Вы должны сохранить указатель в вашем «Классе B» на «Объект класса A», чтобы при разрушении «Объекта B» «Объект класса A» не восстанавливался.

EDIT:

Я думаю, что это может решить вашу проблему:

aObjectPTR = POINTER(aObj)

Теперь у вас есть указатель с именем "aObjectPTR". поместите вместо "AObj" имя вашего объекта класса А. После этого у вас есть указатель, указывающий на объект класса A, так что указатель (aObjectPTR) будет только возвращаться, а не объект, на который он указывает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...