Хранение настроек приложения - PullRequest
0 голосов
/ 26 января 2012

У меня есть приложение на 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");

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

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

1 Ответ

0 голосов
/ 26 января 2012

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

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

...