Я пытаюсь понять, как структурировать мою игру. Я хочу передать своих «менеджеров» по иерархии, а не делать их глобальными. Но я столкнулся с проблемой. Один из моих менеджеров обновляет сцены. Необходимо передать ссылку Application на сцены, поскольку application содержит метод quit. Но мое приложение содержит и обновляет этот SceneManager. Поэтому мое приложение теперь включает в себя SceneManager, так как оно нуждается в обновлении, а мой SceneManager включает приложение, поскольку ему необходимо передать ссылку на приложение в сцены.
В основном приложение содержит все менеджеры, SceneManager передает ссылку на приложение на сцены, менеджеры использования сцен Получено из ссылки на приложение.
// In application
sceneManager.updateScenes(*this);
// In SceneManager
currentScene.update(application)
// In scene
application.getSceneManager().doSomething()
Может ли кто-нибудь подсказать мне, как элегантно структурировать эту часть моей игры? Я знаю о предварительных декларациях, но я хотел бы знать, есть ли решение без необходимости делать предварительные декларации.
Я мог бы использовать глобальные переменные, но я бы не хотел.