我有一个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");
问题是,在初始化配置管理器之前,可能会包含此文件,或者不包含?
我知道这个代码很糟糕,但我不知道如何把它写得更好。
据我所知,您希望在应用程序启动时将配置设置存储在内存中,这样您就不需要在运行时访问配置文件。但是,既然已经有了这样的singleton,为什么还要决定使用全局变量呢?
我会将这些设置存储为ConfigManager的私有属性,并将其初始化为ConfigManager初始化的一部分。然后,当调用类似Root::Get().GetConfig()->GetValue("Key")
的东西时,它会返回其中一个私有属性的值。