C++ 如何删除此循环依赖项?

C++ 如何删除此循环依赖项?,c++,architecture,C++,Architecture,我想做什么? 我在试着做游戏。而不是全球的“管理者” ,我决定我可以把所有的经理都传下去。我的计划是创建一个“应用程序”类,它将保存所有“管理器”对象,如窗口、资产管理器等。。。然后应用程序将其引用传递给场景管理器,场景管理器将应用程序引用传递给场景,场景管理器将其传递给游戏对象,这样就可以从任何层级调用任何管理器 问题是,我的应用程序持有SceneManager。场景管理器需要将应用程序引用传递给场景 图表: 代码:(简化) 应用程序: 应用程序依赖于SceneManager,因为它需要保存

我想做什么?

我在试着做游戏。而不是全球的“管理者” ,我决定我可以把所有的经理都传下去。我的计划是创建一个“应用程序”类,它将保存所有“管理器”对象,如窗口、资产管理器等。。。然后应用程序将其引用传递给场景管理器,场景管理器将应用程序引用传递给场景,场景管理器将其传递给游戏对象,这样就可以从任何层级调用任何管理器

问题是,我的应用程序持有SceneManager。场景管理器需要将应用程序引用传递给场景

图表:

代码:(简化)

应用程序:

应用程序依赖于SceneManager,因为它需要保存并更新它

#include "SceneManager"
class Application {
  public:
    SceneManager& getSceneManager();
    void update();
    void quit();
enter code here
  private:
    SceneManager sceneManager;
    // Input, Window, Asset loaders etc
};
场景管理员:

SceneManager依赖于应用程序,因为它需要将应用程序引用传递到当前场景

#include "Application"
class SceneManager {
  public:
    void updateCurrentScene(Application& application);
    // Handling scene switching etc.
enter code here
  private:
    Scene currentScene;
};
在场景中,可以:

void onUpdate(Application& application) {
    application.getSceneManager().doSomething();
}
是否有可能删除循环引用,并且仍然有这种“传递经理”的方式?
你会怎么做

您可以在头文件中“向前声明”类

class Application;
而不是完整的
#包含
。
您将需要在cpp文件中包含
#include
(或者在您对前向声明的类执行任何操作之前)