gpt4 book ai didi

c++ - 一种读取配置属性的简单方法

转载 作者:太空宇宙 更新时间:2023-11-04 14:03:19 25 4
gpt4 key购买 nike

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

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

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

编辑:

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

示例获取方法如下:

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

最佳答案

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

关于c++ - 一种读取配置属性的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18192483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com