所以我有三個有關文件:結構將無法正常工作包含在頭文件時
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;
創建一個全球性的雪碧和全部結帳。但是,當我嘗試爆炸框架=或爆炸框架=(或任何其他成員的事情),我得到的錯誤「表達式必須是一個指向完整的對象類型。」
如果我在MyDirectX.h中定義整個結構而不是MyDirectX.cpp,則會得到一個無法解析的外部符號。如果我在兩個定義中出現重新定義錯誤。
我一直在做測試和研究幾個小時,我只是無法弄清楚這一點。對我來說,爲什麼這個結構在MyGame.cpp中工作,但在我的頭文件中使用它時不起作用。我應該注意到,我已經在這些文件中聲明並定義了許多函數,並且它們都工作得很好。
任何幫助將不勝感激。 謝謝。
您可以創建[SSCCE](http://sscce.org/)嗎? – 2013-02-21 20:02:18
@Joachim Pileborg我想我可以想出一些東西。 – Wimp 2013-02-21 20:17:10
「我可以在MyGame.cpp中創建一個全局的Sprite」不,你不能,而不是你所描述的設置:http://liveworkspace.org/code/28MHuK$1你必須使_definition_在你使用的地方可見該類型需要完整的類型。 – bames53 2013-02-21 20:23:46