我正在尝试为现有代码/项目添加一些可配置属性。我发现做这么多步骤真是太烦人了:
在我们的例子中,该头文件和cpp文件仅用于从文本文件中读取的属性,并且仅在此模块中需要这些属性。因此,我们可以使用更少的文件或更少的步骤来简化它们。有什么想法/建议吗?
修改
地图用于保存文本文件中的内容。
示例get方法喜欢这样:
unsigned int Module1Config::getSleepTime()
{
return getPropertyMap().getUnsignedIntProperty(SLEEP_TIME_KEY);
}
答案 0 :(得分:0)
如果私有std::map
的密钥只是在配置文件中声明的那些密钥呢?然后,你可以有一个getter函数,可以根据需要输入值,如果不存在则使用默认值:
template<class T>
T get(const std::string &key) const
{
if the key is in the map,
return its value converted to type T
else
return T();
}
您可能会发现有用的第二个函数可以告诉您是否声明了某个键:
bool exists(const std::string &key) const
{
return true iif key is in the map
}
这种方法的优点是,在添加新属性时无需修改类。可以理解的是,键名不会在h文件中创建为常量标识符,因此您必须始终使用字符串,这可能容易出错。无论如何,我认为它的多功能性是值得的(这是我在我的程序中使用的方法)。