You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中用cppyy定义指向导入虚类的shared_ptr

正确实现方式

首先确保cppyy已经加载了包含X::Y类定义的头文件或编译库:

import cppyy
cppyy.include("你的头文件路径.h")  # 若已编译为库则用 cppyy.load_library("你的库名")

要创建空的std::shared_ptr<X::Y>,有两种直接可行的写法:

方式一:默认构造(对应C++的nullptr初始化)

tempValue = cppyy.gbl.std.shared_ptr[cppyy.gbl.X.Y]()

方式二:显式用nullptr初始化

nullptr = cppyy.gbl.nullptr
tempValue = cppyy.gbl.std.shared_ptr[cppyy.gbl.X.Y](nullptr)

为什么之前的写法无效?

你之前使用的__smartptr__是cppyy为某些类自动生成的智能指针别名,但仅当类本身有对应的智能指针typedef(比如类内部定义了using smartptr = std::shared_ptr<Y>)时才有效。而这里需要显式构造std::shared_ptr模板实例,指定模板参数为X::Y,因此直接调用std::shared_ptr的构造方法才是正确路径。

内容的提问来源于stack exchange,提问作者iliya pruzhinin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 09:35:06