だから私は3つの関連ファイルを持っています:
MyGame.cpp //Where all my codeing takes place
MyDirectX.h //Where I declare prototypes
MyDirectX.cpp //where I define functions/structs
次のような小さな構造体があります。
struct Sprite
{
LPDIRECT3DTEXTURE9 texture;
int frame;
int starttime;
Sprite()
{
texture = NULL;
texture = LoadTexture("explosion_30_128.tga");
frame = 0;
starttime = 0;
}
};
だからここに問題があります:
MyGame.cpp で宣言すると、構造体は問題なく動作します。ただし、他の関数がそれに依存しているため (および整頓のために)、ヘッダー ファイルに必要です。MyDirectX.h で次のように宣言します。
struct Sprite;
MyDirectX.cpp で定義します。
struct Sprite
{...code...};
MyGame.cpp でグローバル スプライトを作成できます
Sprite explosion;
そして、すべてチェックアウトします。しかし、explosion.frame = または development->frame = (またはその他のメンバー) を実行しようとすると、「式は完全なオブジェクト型へのポインターである必要があります」というエラーが表示されます。
MyDirectX.cpp ではなく MyDirectX.h で構造体全体を定義すると、未解決の外部シンボルが取得されます。両方で定義すると、再定義エラーが発生します。
私は何時間もテストと調査を行ってきましたが、これを理解することはできません. 構造体が MyGame.cpp で機能するのに、ヘッダー ファイルで使用すると機能しない理由がわかりません。これらのファイルで多くの関数を宣言および定義しましたが、それらはすべて問題なく動作することに注意してください。
どんな助けでも大歓迎です。ありがとう。