首页 > 解决方案 > 继承的类的 Cpp 构造函数

问题描述

很长一段时间后,我一直在使用 cpp,但我遇到了一个奇怪的问题,我找不到解决办法。我有一个名为 base message 的类,有 2 种构造函数,一种默认为空,另一种接受 2 个参数:

BaseMessage();

BaseMessage(int msgId, const string name);

我现在正在尝试实现一个类的构造函数,该类是 BaseMessage 类的子类,如下所示:

CMicroControllerMainMsg::CMicroControllerMainMsg():BaseMessage(21,"s"), _data{ }
{
  Encode();
}

其中 BaseMessage 获得一个 ID 和名称,_data 是一个结构,我在开始时用 0 初始化。现在问题来了,我的 IDE 不允许我使用 BaseMessage 的构造函数(告诉我它是一个未解析的符号),但是如果我使用默认的空构造函数,它确实允许我:

CMicroControllerMainMsg::CMicroControllerMainMsg():BaseMessage(), _data{ }
{
  Encode();
}

所以我的问题如下:

  1. 为什么我不能使用带参数的构造函数?
  2. 我可以像下面的例子那样规避这个问题吗?
CMicroControllerMainMsg::CMicroControllerMainMsg(): _data{ }
{
  BaseMessage(21,"s");  
  Encode();
}

标签: c++inheritanceconstructor

解决方案


推荐阅读