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