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

Posted

技术标签:

【中文标题】停止python对象在c ++中超出范围【英文标题】:stop python object going out of scope in c++ 【发布时间】:2009-09-01 07:28:21 【问题描述】:

有没有办法将一个新的类实例(继承 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】:

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

【讨论】:

以上是关于停止python对象在c ++中超出范围的主要内容,如果未能解决你的问题,请参考以下文章

下标在MSFlexgrid中超出范围

android 自定义View中滑动操作防止超出边界的简便方法

kivy 中超出了最大递归深度,但仅在打包时超出,而不是在使用 python 开发应用程序时

如何管理 SVG 文件中超出范围的值?

java 详细介绍short,byte,char三种类型,我分不清

SwiftUI 文本在 HStack 中超出屏幕