C ++对象依赖性问题

时间:2013-11-29 10:56:42

标签: c++

我在用C ++创建自己的游戏引擎时遇到了一些问题。我想要两个对象:

一个ObjectCreator类和一个Player类。 对象创建者可以创建玩家,玩家可以使用对象创建者来创建子弹。问题是,彼此使用两个头文件会导致游戏无法编译。简单地在没有#include的头文件中声明类不会工作,因为我无法以这种方式访问​​函数。

以下是一个例子:

#include "Player.h"
class ObjectCreator
{
public:
ObjectCreator();
void CreatePlayer();
}

#include "ObjectCreator";
class Player
{
Public:
Player();
CreateBulletsWithObjectCreator();
}

那么,有没有人有解决这个问题的方法呢?任何帮助表示赞赏:3

1 个答案:

答案 0 :(得分:3)

如果你有一个循环依赖,它通常是一个糟糕的设计气味。解决此问题的常用方法是将另一部分中的功能提取到另一部分中。

在您的情况下,您可以例如将您的ObjectCreator分隔为PlayerCreatorBulletCreator。无论如何,让一个类创建各种对象似乎没有任何逻辑意义。

从语法上讲,还有一些方法可以使用循环依赖。诀窍是只在至少一个头文件中转发声明循环引用的对象,而不是包括它的头;然后仅在源文件中包含其他标头。 然而,由于设计糟糕的气味,通常更好的做法是进行上述重新设计。