しかし、敵関連のクラスをヘッダで宣言しているにも関わらずエラーが出てしまいます。Visual Studioのコードを書く部分にも赤線が出ないため修正部分がわかりません。解決方法を教えてください。ヘッダファイルやcppファイルは以下のとおりです。
enemy.hのエラーは「'ENEMY':'class'型の再定義」
control.cppのエラー「認識できない型'ENEMY'が使われています(3行目)(34行目)」
「'->All':左側がクラス、構造体、共用体、ジェネリック型へのポインタではありません(34行目)」
以上がエラーになります。
//enemy.h
//敵関連のクラス
class ENEMY{
private:
//画像座標
double x, y;
//グラフィックハンドル
int gh[3];
//画像幅、高さ
int width, height;
//動きの時間
int in_time, stop_time, out_time;
//カウント
int count;
//画面外に出たかどうかのフラグ
bool endflag;
public:
bool All();
void Move();
void Draw();
ENEMY();
};
//control.h
#include "player.h"
#include "BACK.h"
#include "enemy.h"
//player.hではPLAYERクラスの宣言
//BACK.hでは背景クラスの宣言
class CONTROL {
private:
//プレイヤークラスのポインタ
PLAYER * player;
//背景クラスのポインタ
BACK * back;
//エネミークラスのポインタ
ENEMY * enemy;
public:
CONTROL();
~CONTROL();
void All();
};
//control.cpp
#include "pch.h"
#include "enemy.h"
#include "control.h"
CONTROL::CONTROL()
{
//プレイヤークラスの生成
player = new PLAYER;
//背景クラスの作成
back = new BACK;
//ENEMYクラスの生成
enemy = new ENEMY;
}
CONTROL::~CONTROL()
{
//プレイヤークラスの開放
delete player;
}
void CONTROL::All()
{
//描写領域を設定
SetDrawArea (MARGIN,MARGIN,MARGIN+380,MARGIN+460); //MARGINは他のヘッダで10と定義しています
//背景クラスのAll関数実行
back->All();
//プレイヤークラスのAll関数実行
player->All();
if (enemy != NULL) { //control.hでポインターを宣言
if (enemy->All()) {
delete enemy;
enemy = NULL;
}
}
++g_count;
}