私は私の大学のクラスの一つでプログラミングの課題を持っています。教授は具体的なコードを教えてくれました。コードを変更しないように教えてくれました。私は、Mgrというクラスから継承するGameMgrというクラスを作ることになっています。ここで彼はMgr.hのための私達に与えたものの簡易版である:親クラスがC++でデフォルトコンストラクタを持たない場合、継承クラスでコンストラクタを使用するにはどうすればよいですか?
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?の解決策を試しましたが、まだ動作していません。したがって、私はそれが私の質問に対する解決策であるとは思わない。
可能性のある重複した[私は、基本クラスのコンストラクタを呼び出すにはどうすればよいです?](http://stackoverflow.com/questions/6923722/how-do-i-call-the-base- – Ari0nhh
@ Ari0nhh私はCodePadの例で答えようとしましたが、動作しません。 – kingcobra1986