应用程序设置存储

时间:2012-01-25 22:04:46

标签: c++ configuration singleton global-variables

我有一个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管理器之前可能包含此文件吗?

我知道这段代码很糟糕,但我不知道怎么写得更好。

1 个答案:

答案 0 :(得分:0)

根据我的理解,您希望在应用程序启动时将配置设置存储在内存中,这样您就不需要在运行时访问配置文件。但是,当你有像这样的单身时,你为什么决定使用全局变量?

我将这些设置存储为ConfigManager的私有属性,并将它们初始化为ConfigManager初始化的一部分。然后当调用Root::Get().GetConfig()->GetValue("Key")之类的东西时,它将返回其中一个私有属性的值。