ページ 11

継承について

Posted: 2012年9月30日(日) 15:34
by 奥兵
現在C++について勉強中なのですが。継承をしようとした際に、 「クラス、構造体、共用体に既定のコンストラクターがありません。」
と表示されてコンパイルできません。どなたかアドバイスお願いします。

親クラス

コード:

#include "SimpleDirect2dApplication.h"
#include "bullet.h"
 
class unit {
public:

	ID2D1Bitmap *Graphic;
	bullet *Blt; 
	TCHAR *NAME;
	int HP;
	float x;
	float y;

	int GetKey(); 
	//////////////////////////////////////////////////////////
	unit(class Graphic *app);
	/*~unit();*/
private:
	int shotlock;
};

コード:

#include "unitClass.h"

class Eunit : public unit{
public:
	 
	Eunit(class Graphic *app);

};

コード:

#include "Eunit.h"
	
Eunit::Eunit(class Graphic *app){//←ここに赤の波線が出ます。
	Graphic=app->LoadGr(L"Evaryday.png");
	
}

Re: 継承について

Posted: 2012年9月30日(日) 16:04
by zxc
  ぱっと見ただけですが、クラスunit,Eunit,いずれも
仮引数をもつコンストラクタがあるように思われました。

 派生クラスのインスタンス生成したら基底・派生の両方のコンストラクタが呼ばれます。
しかしながら例では基底クラスのコンストラクタに引数を渡せていません。
オーバーロード等されていないようですので、エラーとなるでしょう。

  継承とコンストラクタについて調べることをお勧めします。

Re: 継承について

Posted: 2012年9月30日(日) 16:20
by 奥兵
原因がわかったので解決できました。ありがとうございます。