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

继承类构造函数报错:Control_Reg_Value_HV无默认构造函数

问题解决:派生类构造报错“不存在Control_Reg_Value_HV的默认构造函数”

报错原因

C++中,当派生类构造函数未在初始化列表里显式调用基类构造函数时,编译器会自动尝试调用基类的默认构造函数(无参数版本)。但你仅给Control_Reg_Value_HV定义了带两个参数的构造函数,一旦显式定义了任何构造函数,编译器就不会自动生成默认构造函数,因此触发该报错。

两种解决方法

方法1:给基类添加默认构造函数

在Control_Reg_Value_HV类中补充无参数构造函数,可为成员变量设置默认初始值:

class Control_Reg_Value_HV{
public:
    // 添加默认构造函数
    Control_Reg_Value_HV() : Control_Write_Value(0), Control_Store_Value(0) {}

    // 原有带参构造函数
    Control_Reg_Value_HV(uint16_t Control_Write_Value_, uint16_t Control_Store_Value_);
    // 拷贝构造、赋值运算符、析构函数等原有成员
};

方法2:在派生类构造中显式调用基类带参构造

如果基类对象必须要有有效参数初始化,可在Data_SPI的构造初始化列表里,直接调用基类的带参构造函数并传入合适值:

class Data_SPI:public Control_Reg_Value_HV{
public:
    // 显式调用基类带参构造,示例传入0,0作为默认值
    Data_SPI() : Control_Reg_Value_HV(0, 0), Resistance_Val_HV{10,11} {}

private:
    uint16_t Resistance_Val_HV[200];
};

选择建议

  • 若基类允许无参数初始化,方法1更简洁;
  • 若基类的Control_Write_Value和Control_Store_Value必须有有效值,方法2更安全,避免成员变量处于未定义状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 16:10:29