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

如何在Cython中调用C++类的基类构造函数?

在Cython中调用C++基类的带参构造函数

要让Cython生成的Child类在C++构造函数初始化列表中调用Base(int)构造函数,直接在Child的__init__方法中显式调用基类的带参构造函数即可,具体实现如下:

示例代码

cdef extern from "foo.h":
    cppclass Base:
        Base(int i)  # 唯一构造函数

cdef cppclass Child(Base):
    # 定义带参数的构造函数,调用基类的Base(int)
    __init__(int i):
        Base(i)

如果需要固定参数调用基类构造函数,也可以这么写:

cdef cppclass Child(Base):
    __init__():
        Base(42)  # 固定传递42给Base的构造函数

原理说明

Cython会自动将__init__方法中对基类构造函数的调用,转换为C构造函数初始化列表中的代码。比如第一个示例生成的C代码会是:

Child::Child(int i) : Base(i) {
    // 对应__init__方法中的其他逻辑(此处为空)
}

完全满足你需要的初始化列表初始化基类的要求。

内容的提问来源于stack exchange,提问作者Mike Graham

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 23:10:26