我在我的一门大学课程中有一项编程任务。教授给了我们具体的代码,并告诉我们不要修改他的代码。我应该创建一个名为 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;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句