我想在我的类中创建一个常量列表,但我不知道如何正确地这样做。
首先,我尝试这样做,但它在一个枚举中:
class CMyClass{
public:
enum EKeyword
{
E_PARAM1 = "myString1",
E_PARAM2 = "myString2",
...
};但这似乎是不可能的(-> error C2057: expected expression)
我知道我可以用#define或使用"static const ...“逐个声明我的每个常量。声明,但我喜欢使用: EKeyword.E_PARAM1来获取字符串,并且我不想将这些常量设置为全局常量。
有什么建议吗?
发布于 2019-01-08 18:24:38
下面是发问者的评论:
我正在创建一个关键字列表,我将在文件中查找这些关键字,然后用它的值交换关键字。例如:查找关键字"$temperature“->将该词替换为"28°C”
您建议的使用命名变量或枚举的方法将不适用于此,因为C++没有反射,并且无法从代码中访问变量名称。您需要的是一个从要查找的值到要替换它们的值的映射-可能是std::map<std::string, std::string>,尽管根据用例可能需要更高的性能选项。
要做到这一点,最好的方法是读取一个包含替换值的文件,因为这样您就可以在不修改代码的情况下修改替换值,并且有一个更通用的解决方案,但是如果统一初始化不适合您的需要,或者由于某种原因C++11对您不可用,您可以使用C++11的统一初始化列表在您的代码中填充映射,或者可能在构造函数中逐个填充它们。
然后,您可以浏览文件,查找要替换的字符串,并将其替换为列出的替换字符串。不过要小心,你会对重叠替换做些什么?你是否只检查整个单词,等等?
https://stackoverflow.com/questions/54089172
复制相似问题