我目前在我的项目(C++)中相互包含有问题。
通常,如果我有一个相互包含的问题,我会很容易地通过前向声明或重新设计类来解决它。但这一次,我被困住了:
我有一个名为Game的类,它创建和启动核心游戏系统,其中一个称为GraphicsSystem。在 Game 构造函数中,GraphicsSystem 对象被动态创建并存储在 GraphicsSystem* 指针中。看起来像这样:
Game::Game ()
{
gfxSys = new GraphicsSystem(80, new Camera());
}
现在我的 GraphicsSystem 类需要在某一时刻访问 Game 类的方法来获取存储在 Game 对象中的玩家对象。各自的部分看起来像这样(游戏是单例!):
void GraphicsSystem::handleFrame ()
{
ElementList elements = Game::instance()->getPlayer()->getEnvironment()->getElements();
}
现在我已经尝试在两个方向上进行前向声明,但这不能满足编译器的要求。我当然也可以将玩家指针放入图形系统,但我真的不想这样做,因为他不属于那里。
有没有什么办法可以解决这个问题,而我不必过多地改变设计?我现在真的很困惑,所以我希望你们能帮助我。
我正在使用 Visual Studio 2010 (Visual C++)。
先感谢您!克里斯