継承について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
奥兵

継承について

#1

投稿記事 by 奥兵 » 11年前

現在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");
	
}

zxc
記事: 79
登録日時: 11年前
住所: 日本の背骨(?)あたり

Re: 継承について

#2

投稿記事 by zxc » 11年前

  ぱっと見ただけですが、クラスunit,Eunit,いずれも
仮引数をもつコンストラクタがあるように思われました。

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

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

奥兵

Re: 継承について

#3

投稿記事 by 奥兵 » 11年前

原因がわかったので解決できました。ありがとうございます。

閉鎖

“C言語何でも質問掲示板” へ戻る