2012-01-25 4 views
0

У меня есть приложение C++. Мне нужно загрузить некоторые данные конфигурации из файла.Хранение настроек приложения

Структура:

Root(singleton) → ConfigManager(); LogManager(); ...; 

Так все менеджеры созданы в Roo'ts CTOR и я могу получить указатели на них, используя метод: Root::Get().GetSomeManager();

int main() 
{ 
    // Here all managers are initialized 
    Root::Get(); 
    // App cycle 
    Root::Get().Deinitialize(); 

    return 0; 
} 

ConfigManager позволяет мне загружать из значений файлов по ключу передается.

Вопрос: Как хранить значения из файла в каком-либо глобальном дополнительном файле?

Я написал файл Config.hpp с кодом, который выглядит как:

const int val = Root::Get().GetConfig()->GetValue("Key"); 

Проблема заключается в том, что этот файл, возможно, может быть включено до менеджера Config инициализируется, или нет?

Я знаю, что этот код плохой, но я не знаю, как его лучше писать.

ответ

0

Насколько я понимаю, вы хотите сохранить настройки конфигурации в памяти при запуске приложения, чтобы вам не нужно было получать доступ к конфигурационному файлу во время выполнения. Но почему вы решили использовать для него глобальные переменные, когда у вас уже есть такой сингл?

Я бы сохранил эти настройки как частные атрибуты ConfigManager и инициализировал их как часть инициализации ConfigManager. И затем, когда вызывается что-то вроде Root::Get().GetConfig()->GetValue("Key"), оно уже вернет значение одного из этих частных атрибутов.

Смежные вопросы