首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在类中声明常量的“列表”

在类中声明常量的“列表”
EN

Stack Overflow用户
提问于 2019-01-08 17:51:42
回答 2查看 514关注 0票数 0

我想在我的类中创建一个常量列表,但我不知道如何正确地这样做。

首先,我尝试这样做,但它在一个枚举中:

代码语言:javascript
复制
class CMyClass{

public:
enum EKeyword
{
  E_PARAM1 = "myString1",
  E_PARAM2 = "myString2",
  ...
};

但这似乎是不可能的(-> error C2057: expected expression)

我知道我可以用#define或使用"static const ...“逐个声明我的每个常量。声明,但我喜欢使用: EKeyword.E_PARAM1来获取字符串,并且我不想将这些常量设置为全局常量。

有什么建议吗?

EN

Stack Overflow用户

发布于 2019-01-08 18:24:38

下面是发问者的评论:

我正在创建一个关键字列表,我将在文件中查找这些关键字,然后用它的值交换关键字。例如:查找关键字"$temperature“->将该词替换为"28°C”

您建议的使用命名变量或枚举的方法将不适用于此,因为C++没有反射,并且无法从代码中访问变量名称。您需要的是一个从要查找的值到要替换它们的值的映射-可能是std::map<std::string, std::string>,尽管根据用例可能需要更高的性能选项。

要做到这一点,最好的方法是读取一个包含替换值的文件,因为这样您就可以在不修改代码的情况下修改替换值,并且有一个更通用的解决方案,但是如果统一初始化不适合您的需要,或者由于某种原因C++11对您不可用,您可以使用C++11的统一初始化列表在您的代码中填充映射,或者可能在构造函数中逐个填充它们。

然后,您可以浏览文件,查找要替换的字符串,并将其替换为列出的替换字符串。不过要小心,你会对重叠替换做些什么?你是否只检查整个单词,等等?

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54089172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档