我在我的一个大学课程中有一个编程任务。教授给了我们特定的代码来告诉我们不要改变他的代码。我应该创建一个名为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)
^
I have made a pad on CodePad with an example(简介中的示例仅适用于此问题,并不是我的实际代码,但会显示此问题所需的最少代码。)
我尝试在我的GameMgr类中添加一个默认构造函数,但我仍然遇到错误。我假设它可以完成,因为它是我教授的代码,但我知道解决它的唯一方法是将Mgr类更改为Mgr()。
当父类在C ++中没有默认构造函数时,如何在继承类中使用构造函数?
我在我的CodePen示例中尝试了此问题的解决方案:How do I call the base class constructor?,但它仍然无法运行。因此,我不相信这是我的问题的解决方案。
答案 0 :(得分:2)
你可以尝试这个例子。我使用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;
}