停止python对象超出c ++范围

时间:2009-09-01 07:28:21

标签: c++ python boost object

有没有办法将新的类实例(继承c ++类的python类)转换为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 object to native c++ pointer

1 个答案:

答案 0 :(得分:2)

您必须增加pyInstance的reference count。这将阻止Python删除它。当您准备删除它时,您可以简单地减少引用计数,Python将为您清理它。