当父类在 C++ 中没有默认构造函数时,如何在继承的类中使用构造函数?
How do I use the constructor in inherited classes when the parent class doesn't have a default constructor in C++?
我在大学课程中有一个编程作业。教授给了我们特定的代码,并告诉我们不要改变他的代码。我应该创建一个名为 GameMgr 的类,该类继承自一个名为 Mgr 的类。 以下是他为 Mgr.h 提供的内容的简化版本:
class Engine;
class Mgr
{
public:
Engine *engine;
Mgr(Engine *eng);
virtual ~Mgr();
};
我正在尝试创建一个名为GameMgr的类:
class GameMgr: public Mgr
{
public:
GameMgr(Engine* eng);
void Run();
};
尝试编译代码时出现错误:
error: no matching function for call to ‘Mgr::Mgr()’
GameMgr::GameMgr(Engine* eng)
^
我在CodePad上用一个例子做了一个垫子(pad中的示例仅用于这个问题,不是我的实际代码,但显示了这个问题所需的最少代码)。
我尝试将默认构造函数添加到我的 GameMgr 类,但仍然收到错误。我假设这是可以做到的,因为它是我的教授的代码,但我知道解决它的唯一方法是将 Mgr 类更改为具有 Mgr()。
当父类在 C++ 中没有默认构造函数时,如何在继承的类中使用构造函数?
我尝试了这个问题的解决方案:在我的 CodePen 示例中,如何调用基类构造函数?,但它仍然不起作用。因此,我不认为这是解决我问题的办法。
你可以试试这个例子。我使用了一个int
来简化。
#include <iostream>
using namespace std;
class Mgr
{
public:
int a;
Mgr(int _a):a(_a){}
virtual ~Mgr(){}
};
class GameMgr: public Mgr
{
public:
GameMgr(int _b):Mgr(_b) {}
~GameMgr(){}
void Run();
};
int main() {
GameMgr game_mgr(9);
return 0;
}
示例代码
相关文章:
- 具有相同名称的类的构造函数继承
- 多复制构造函数继承中的惊人行为
- CRTP 和复制/移动赋值/构造函数继承
- 复制构造函数继承动态分配的数组
- 无法从 c++ 中的构造函数继承
- 在构造函数继承中使用默认构造函数
- 构造函数继承和直接成员初始化
- C++ - 使用私有参数的构造函数继承
- 通过可变参数模板进行C++11构造函数继承
- C++11构造函数继承和不带参数的构造函数
- C++11 - 构造函数继承
- C++构造函数继承
- 使用 C++11 编译器的构造函数继承正在生成错误
- 选择性构造函数继承"Ambiguous resolution"错误
- 什么是构造函数继承
- C++对象中的构造函数继承与方法继承
- C++构造函数继承没有匹配的函数
- C++构造函数继承(从派生类调用构造函数)
- 模板构造函数继承的标准符合语法是什么
- C++构造函数继承错误