我在用C ++创建自己的游戏引擎时遇到了一些问题。我想要两个对象:
一个ObjectCreator类和一个Player类。 对象创建者可以创建玩家,玩家可以使用对象创建者来创建子弹。问题是,彼此使用两个头文件会导致游戏无法编译。简单地在没有#include的头文件中声明类不会工作,因为我无法以这种方式访问函数。
以下是一个例子:
#include "Player.h"
class ObjectCreator
{
public:
ObjectCreator();
void CreatePlayer();
}
#include "ObjectCreator";
class Player
{
Public:
Player();
CreateBulletsWithObjectCreator();
}
那么,有没有人有解决这个问题的方法呢?任何帮助表示赞赏:3
答案 0 :(得分:3)
如果你有一个循环依赖,它通常是一个糟糕的设计气味。解决此问题的常用方法是将另一部分中的功能提取到另一部分中。
在您的情况下,您可以例如将您的ObjectCreator
分隔为PlayerCreator
和BulletCreator
。无论如何,让一个类创建各种对象似乎没有任何逻辑意义。
从语法上讲,还有一些方法可以使用循环依赖。诀窍是只在至少一个头文件中转发声明循环引用的对象,而不是包括它的头;然后仅在源文件中包含其他标头。 然而,由于设计糟糕的气味,通常更好的做法是进行上述重新设计。