Для того, чтобы не таскать по всему приложению вытаскивание через extern глобальных объектов (всякие синглтоны с наборами конфигурирующих данных):
extern GlobalParameters globalParameters;
extern FixedParameters fixedParameters;
extern AppConfig appConfig;
... я решил сделать один объект (назовем его ядро) и все эти синглтоны поместить в него как включение.
Но это решение все равно будет требовать extern ядра в тех файлах, где нужны данные:
extern Core core;
Я решил сделать более правильно: надеясь на макрос qApp, я написал вот такой класс:
class App : public QGuiApplication
{
public:
App(int &argc, char **argv);
Core core; // Дополнительное поле, содержит ядро
};
И создаю приложение уже на основе такого класса:
App app(argc, argv);
Я думал, что к объекту core смогу обращаться в любом месте программы вот так:
qApp->core
Но нет, выяснилось, что макрос qApp возвращает тип QGuiApplication *, а у этого типа, естественно, нет поля core.
Вопрос: каким методом можно таскать по всему Qt-коду ссылку на ядро (не передавая его во все методы), и не помещая ядро в глобальную область видимости с последующим extern?