остановить выход объекта Python из области видимости в C ++ - PullRequest
0 голосов
/ 01 сентября 2009

Есть ли способ передать новый экземпляр класса (класс python, который наследует класс c ++) в c ++ без необходимости удерживать возврат объекта и просто обрабатывать его как указатель c ++.

Например:

C ++

object pyInstance = GetLocalDict()["makeNewGamePlay"]();
CGEPYGameMode* m_pGameMode = extract< CGEPYGameMode* >( pyInstance );

pyth:

class Alpha(CGEPYGameMode):
  def someFunct(self):
    pass

def makeNewGamePlay():
  return Alpha()

pyInstance - это экземпляр класса python, а m_pGameMode - указатель на базовый класс c ++ того же экземпляра. Однако, если я сохраню указатель и позволю объекту выйти из области видимости, объект python будет очищен. Есть ли способ получить указатель c ++ без очистки объекта?

Дополнительная информация: объект Python на нативный указатель c ++

1 Ответ

2 голосов
/ 01 сентября 2009

Вы должны увеличить счетчик ссылок pyInstance. Это помешает Python удалить его. Когда вы будете готовы удалить его, вы можете просто уменьшить счетчик ссылок, и Python сделает это за вас.

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