今こちらのサイトを参考にしてシューティングゲームに挑戦させてもらっています。
分割コンパイルしていてhファイルで構造体定義をしていたのですが、そこで困りました。
~ Enemy.h ~
#ifndef DEF_ENEMY_H //二重include防止
#define DEF_ENEMY_H
#define MARU 5
#define ENEMYSHOT01 30
typedef struct{
int MaruX[MARU] , MaruY[MARU] ;
int MaruHP[MARU] ;
int MaruShotC[MARU] ;
int MaruFlag[MARU] ;
int MaruGraph ;
int MW , MH ;
int MaruShotX[ENEMYSHOT01] , MaruShotY[ENEMYSHOT01] ;
int MaruShotF[ENEMYSHOT01] ;
int MaruShotG ;
int MSW , MSH ;
} Enemy_Maru_t ;
//初期化処理
void Enemy_Maru_Initialize( Enemy_Maru_t *Maru ) ;
//計算処理
void Enemy_Maru_Calc( Enemy_Maru_t *Maru , OrangeShot_t *OrangeShot) ;
//描画処理
void Enemy_Maru_Graph( Enemy_Maru_t *Maru ) ;
#endif
このhファイルを含めたソースファイルをコンパイルするとこのようなエラーが出ました。
1>------ ビルド開始: プロジェクト: STG 1, 構成: Debug Win32 ------
1>コンパイルしています...
1>Enemy.cpp
1>c:\users\shiro\documents\visual studio 2008\projects\stg 1\enemy.h(26) : error C2061: 構文エラー : 識別子 'OrangeShot_t'
1>Main.cpp
1>c:\users\shiro\documents\visual studio 2008\projects\stg 1\enemy.h(26) : error C2061: 構文エラー : 識別子 'OrangeShot_t'
1>c:\users\shiro\documents\visual studio 2008\projects\stg 1\main.cpp(63) : error C2660: 'Enemy_Maru_Calc' : 関数に 2 個の引数を指定できません。
1>c:\users\shiro\documents\visual studio 2008\projects\stg 1\main.cpp(66) : error C2275: 'Enemy_Maru_t' : この型は演算子として使用できません
1> c:\users\shiro\documents\visual studio 2008\projects\stg 1\enemy.h(20) : 'Enemy_Maru_t' の宣言を確認してください。
1>c:\users\shiro\documents\visual studio 2008\projects\stg 1\main.cpp(69) : error C2275: 'Enemy_Maru_t' : この型は演算子として使用できません
1> c:\users\shiro\documents\visual studio 2008\projects\stg 1\enemy.h(20) : 'Enemy_Maru_t' の宣言を確認してください。
1>Shot.cpp
1>c:\users\shiro\documents\visual studio 2008\projects\stg 1\enemy.h(26) : error C2061: 構文エラー : 識別子 'OrangeShot_t'
1>c:\users\shiro\documents\visual studio 2008\projects\stg 1\shot.cpp(90) : error C2039: 'MaruW' : 'Enemy_Maru_t' のメンバではありません。
1> c:\users\shiro\documents\visual studio 2008\projects\stg 1\enemy.h(9) : 'Enemy_Maru_t' の宣言を確認してください。
1>c:\users\shiro\documents\visual studio 2008\projects\stg 1\shot.cpp(91) : error C2039: 'MaruH' : 'Enemy_Maru_t' のメンバではありません。
1> c:\users\shiro\documents\visual studio 2008\projects\stg 1\enemy.h(9) : 'Enemy_Maru_t' の宣言を確認してください。
1>コードを生成中...
1>ビルドログは "~\Documents\Visual Studio 2008\Projects\STG 1\Debug\BuildLog.htm" に保存されました。
1>STG 1 - エラー 8、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
//計算処理
void Enemy_Maru_Calc( Enemy_Maru_t *Maru , OrangeShot_t *OrangeShot) ;
OrangeShot_t *OrangeShot が原因だと思うのですが OrangeShot_t は別のhファイルに定義してあって、どうすればEnemy.hに参照すれば良いかわかりません。
それともほかのやり方があるのでしょうか。( 私にはさっぱり…
OSはWindows7
開発環境はMicrosoft Visual C++ 2008 Express Edition
使用ライブラリはDxLibを使っています。
分かる方どうか教えてください。