C+#包括警卫我是C+新手,但我在C#和Java方面有一些编程经验,所以我可能缺少一些C+特有的基本知识。问题是我不知道出了什么问题,我会粘贴一些代码来解释这个问题。我有三门课,GameEvents,物理学和GameObject。我有他们每一个的标题。GameEvents有一个物理和一个游戏对象列表。物理学有一个游戏对象列表。我想要实现的是,我希望GameObject能够访问或拥有一个物理对象。如果我简单地将“Physics.h”包含在GameObject中,我就会得到我理解的“错误C 2111:‘ClassXXX’:‘class’type refinition”。这就是我认为#包括-后卫会有帮助的地方,所以我给我的物理防护增加了一个包括后卫。h,因为这是我想要包括两次的标题。这就是它的样子#ifndef PHYSICS_H#define PHYSICS_H#include "GameObject.h"#include <list>class Physics{private:
double gravity;
list<GameObject*> objects;
list<GameObject*>::iterator i;public:
Physics(void);
void ApplyPhysics(GameObject*);
void UpdatePhysics(int);
bool RectangleIntersect(SDL_Rect, SDL_Rect);
Vector2X CheckCollisions(Vector2X, GameObject*);};#endif // PHYSICS_H但是,如果我在我的GameObject.h中包含“Physics.h”,现在如下所示:#include "Texture2D.h"#include "Vector2X.h"#include <SDL.h>#include "Physics.h"class GameObject{private:
SDL_Rect collisionBox;public:
Texture2D texture;
Vector2X position;
double gravityForce;
int weight;
bool isOnGround;
GameObject(void);
GameObject(Texture2D, Vector2X, int);
void UpdateObject(int);
void Draw(SDL_Surface*);
void SetPosition(Vector2X);
SDL_Rect GetCollisionBox();};我有很多问题不明白他们为什么会出现。如果我不包括“Physics.h”,我的代码运行得很好。我非常感谢你的帮助。
3 回答
慕森卡
TA贡献1806条经验 获得超8个赞
Physics.h
GameObject.h
Physics.h
Physics
GameObject*
GameObject.h
Physics.h
#include "GameObject.h"
class GameObject;
- 3 回答
- 0 关注
- 343 浏览
添加回答
举报
0/150
提交
取消