構文エラーについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
HSL
記事: 5
登録日時: 13年前

構文エラーについて

#1

投稿記事 by HSL » 13年前

こんにちは。今回は次のコンパイルエラーが出てしまい困っています。
effect.h(6): error C2143: 構文エラー : ';' が '<クラスヘッド>' の前にありません。
Effect.hは次のようになっています。

コード:

#pragma once

#include "Mover.h"
#include "GameParent.h"

class Effect : public Mover{
public:
	enum State{
		STATE_ALIVE,
		STATE_DEAD,
	};
	State mState;
	//タスクリストを指定する為に
	//newとdeleteをオーバーロード
	//タスクリストは効果タスクリストを使用
	void* operator new(size_t t){
		return operator_new(t, GameBody->mEffectList);
	}

	void operator delete(void* p){
		operator_delete(p, GameBody->mEffectList);
	}

	//コンストラクタ
	Effect(double x, double y);
};

class MyShipCrash : public Effect{
protected:
	//カウンタ
	int mCount;
public:
	//コンストラクタ
	MyShipCrash(double x, double y);
	virtual bool move();
};

class Delete : public Effect{
protected:
	//親エフェクト
	Effect* mParent;
	//大きさ
	double mRate;
	//色
	int mColor;
	//画像の回転角度
	double mAngle;
	//カウンタ
	int mCount;
public:
	//コンストラクタ
	Delete(double x, double y, Effect* effect, double rate, int color, double angle);
	virtual bool move();
	virtual void draw();
};

class EnemyCrash : public Effect{
protected:
	//カウンタ
	int mCount;
	//消滅エフェクトの色
	int mColor;
public:
	//コンストラクタ
	EnemyCrash(double x, double y, int color);
	virtual bool move();
};
そして、クラスヘッドが~とのエラーなのでGameParent.hに問題があるのではないかと考えましたが自分の力で見つけることが出来ませんでした。
GameParent.hのコードは次のようになっています。

コード:

#pragma once

#include "Child.h"
#include "define.h"

class Parent;
class TaskList;
class MyShip;
class GameChild;

class GameParent : public Child{
public:
	//2Dグラフィックのハンドル
	int mMyShipImg[12];//自機の画像
	int mBoardImg[30];//ボードの画像
	int mShotImg[2];//自機ショットの画像
	int mBulletImg[10][10];//敵の弾の画像
	int mEffectImgDel[10];//消滅エフェクトの画像
	int mEnemyImg[3][9];

	//当たり判定
	int mBulletRange[10];

	//効果音の鳴らすフラグ
	int mSeFlag[SE_MAX];
	//効果音のハンドル
	int mSe[SE_MAX];

	//タスクリスト
	TaskList* mMyShipList;	//自機のタスクリスト
	TaskList* mShotList;	//自機ショットのタスクリスト
	TaskList* mBulletList;	//敵の弾のタスクリスト
	TaskList* mEffectList;	//効果のタスクリスト
	TaskList* mEnemyList;	//敵のタスクリスト

	enum NextSequence{
		NEXT_ENDING,
		NEXT_GAME_OVER,
		NEXT_TITLE,

		NEXT_NONE
	};
	GameParent();
	~GameParent();

	Child* update(Parent*);
	void moveTo(NextSequence);

	void musicIni();
	void musicPlay();

	void setMyShip(MyShip* ship){
		mMyShip = ship;
	}

	MyShip* getMyShip(){
		return mMyShip;
	}

private:
	//2Dグラフィックデータのロード
	void load();

	//自機へのポインタ
	MyShip* mMyShip;

	//次の状態遷移
	NextSequence mNextSequence;

	//カウンタ
	int mCount;

	//子供
	GameChild* mGameChild;
};

extern GameParent* GameBody;
解決策をご教示いただければ幸いです。

beatle
記事: 1281
登録日時: 13年前
住所: 埼玉
連絡を取る:

Re: 構文エラーについて

#2

投稿記事 by beatle » 13年前

Mover.hの中も見たいです

HSL
記事: 5
登録日時: 13年前

Re: 構文エラーについて

#3

投稿記事 by HSL » 13年前

beatle様

Mover.hについてもコードを張っておくべきでした、申し訳ありません。
次のようになっています。

コード:

#pragma once
#include "Task.h"
#include "define.h"

//移動物体のクラス
class Mover : public Task{
public:
	//座標
	double mX, mY;

	//円の当たり判定としたときの半径の大きさ
	double mRange;

	//コンストラクタ(当たり判定を指定する)
	Mover(TaskList* taskList, double x, double y, double range) :
	Task(taskList), mX(x), mY(y), mRange(range){
	}

	//コンストラクタ(当たり判定を指定しない)
	Mover(TaskList* taskList, double x, double y) :
	Task(taskList), mX(x), mY(y), mRange(0){
	}

	//当たり判定処理(他の移動物体を指定)
	bool isHit(Mover* m){
		double x = mX - (m->mX);
		double y = mY - (m->mY);
		double r = mRange + (m->mRange);
		return (x*x + y*y < r*r);
	}

	//移動、描画
	virtual bool move(){
		return true;
	}
	virtual void draw(){
	}

	bool isOut(int dranX, int dranY){
		return (mX < -dranX || mX > FMX+dranX || mY < -dranY || mY > FMY+dranY);
	}
};
よろしくお願いします。

beatle
記事: 1281
登録日時: 13年前
住所: 埼玉
連絡を取る:

Re: 構文エラーについて

#4

投稿記事 by beatle » 13年前

僕もよくわかりませんね。
http://2ch.ac.la/read.php/tech/1242129892/980n-982n
のように、どこか;を付け忘れている場所があるかもしれません。
ヘッダファイルから更に他のヘッダファイルを呼び出していたりするので、
インクルードしているすべてのヘッダファイルを調査する必要があります。

HSL
記事: 5
登録日時: 13年前

Re: 構文エラーについて

#5

投稿記事 by HSL » 13年前

他のヘッダに記述していた関数ポインタの閉じ括弧}直後に;が足りていないのが発見できました。
関数ポインタは普段使い慣れていないことなので見落としていました。
これにて解決とさせていただきます。
ありがとうございました。

閉鎖

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