2012-12-19 12 views
6

Zawinęłem klasę C++, używając Boost.Python. Te obiekty mają silne referencje (boost :: shared_ptr) po stronie C++, a także mogą występować sporadyczne silne odwołania w Pythonie. Jak dotąd wszystko działa dobrze. Jeśli jednak utworzę słaby odnośnik Pythona z jednego z silnych odniesień, ten słaby odnośnik zostanie usunięty, gdy zniknie ostatnie silne odwołanie Pythona. Chciałbym, żeby słabe odniesienie pozostało przy życiu, dopóki nie zniknie ostatnie silne odniesienie po stronie C++. Czy można to osiągnąć?Boost.Python: Uzyskiwanie słabego odwołania Pythona do owiniętego obiektu C++

Innymi słowy: czy istnieje sposób, aby dowiedzieć się od Pythona, czy konkretny obiekt C++ (zawijany przez Boost.Python) nadal istnieje?

Odpowiedz

1

W jaki sposób posiadasz "silną referencję C++" do zawiniętej klasy?

Jestem dość zardzewiały w python doładowania, ale uważam, że jest to obecność boostera :: shared_ptr, która zapewnia zarządzanie na całe życie.

Jeśli to nie jest problem, prawdopodobnie będziesz musiał zatrzymać instancję w C++ w obiekcie boost :: python :: object.

+0

Podejrzewam, że mam silne referencje w boost :: shared_ptr. Wyjaśniłem pytanie. Czy możesz rozwinąć akapit drugi? Nie mogę nawiązać połączenia z tą kwestią - przepraszam. – uli

Powiązane problemy