所以我有三个有关文件:
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
Sprite explosion;
所有检查。但是当我尝试explosion.frame = 或explosion->frame =(或任何其他成员)时,我收到错误“表达式必须是指向完整对象类型的指针”。
如果我在 MyDirectX.h 而不是 MyDirectX.cpp 中定义整个结构,我会得到一个未解析的外部符号。如果我在两者中都进行了定义,则会出现重新定义错误。
我已经做了几个小时的测试和研究,但我无法弄清楚这一点。对我来说,为什么该结构可以在 MyGame.cpp 中工作但在我的头文件中使用它时不起作用,这对我来说毫无意义。我应该注意,我已经在这些文件中声明并定义了许多函数,它们都工作得很好。
任何帮助将非常感激。谢谢。