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

标签 c++ python boost object

有没有一种方法可以将新类实例(继承 c++ 类的 python 类)转移到 c++ 而不必保留对象返回并将其视为 c++ 指针。

例如:

C++

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

python :

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

def makeNewGamePlay():
  return Alpha()

pyInstance 是 python 类实例,m_pGameMode 是指向同一实例的 c++ 基类的指针。但是,如果我存储指针并让对象超出范围,则 python 对象将被清理。有什么方法可以只使用 c++ 指针而不清理对象吗?

更多信息:python object to native c++ pointer

最佳答案

您必须增加 reference count的实例。这将防止 Python 删除它。当您准备好删除它时,只需减少引用计数,Python 就会为您清理它。

关于c++ - 在 C++ 中停止 python 对象超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1361028/

相关文章:

c++ - 代码执行无法继续,因为找不到 cpprest_2_10.dll

c++ - CodeSourcery Lite 强制包含到 ARM9/的搜索路径

python - 将 mkv 文件转换为 mp4 给我 `filenotfounderror`

java - 有没有等同于 Boost::Python for Java 的东西?

c++ - OpenGL 纹理导致内存问题

c++ - 将 std::vector 与 Igraph 一起使用

python - Panda DataFrame 传入参数进行绘图

python - 如何通过正则表达式查找数字范围

c++ - 在 gcc 中使用 fsanitize 开关的 Boost 问题

c++ - 加载 boost 的共享库时出错