1

我正在尝试向现有代码/项目添加一些可配置属性。我发现有这么多步骤来做到这一点真的很烦人:

  1. 在配置文件中添加条目;
  2. 在 h 文件中声明一个密钥字符串;
  3. 在 cpp 文件中定义该密钥字符串;
  4. 在 h 文件中声明一个 getXXX 方法/函数;
  5. 在 cpp 文件中定义 getXXX 方法/函数;

在我们的例子中,该头文件和 cpp 文件仅用于从文本文件中读取的属性,并且这些属性仅在此模块中需要。所以我们也许可以用更少的文件或更少的步骤来简化它们。有什么想法/建议吗?

编辑:

地图用于保存文本文件中的内容。

示例 get 方法如下所示:

unsigned int Module1Config::getSleepTime()
{
    return getPropertyMap().getUnsignedIntProperty(SLEEP_TIME_KEY);
}
4

1 回答 1

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 文件中创建为常量标识符,因此您必须始终使用字符串,这可能容易出错。无论如何,我认为它的多功能性是值得的(这是我在程序中使用的方法)。

于 2013-08-12T17:13:01.757 回答