【发布时间】:2015-12-18 13:44:02
【问题描述】:
在 c++ 类 Defs 中,我有一个像 enum services {1st_drink = 101, 2nd_drink = 105, seafood_outside = 200,......} 这样的公共枚举。我有大约 200 个关键字,每个关键字都有一个值。现在在另一个类sometest 我需要获取特定的关键字值。关键字就像我的代码中的一个变量,我只有经过一些处理才能知道关键字。所以我想做的是:
.......
std::string keyword = string1 + "_" + string2;
unsigned int a = Defs::keyword;
.......
但是现在当我尝试这样做时,我收到错误 "error C2039: 'keyword': is not a member of 'Defs'" 和 "error C2440: '=': cannot convert from 'std::string' to 'const unsigned int '"。
现在我尝试解决问题。我注意到在Get enum value by name 之前有人问过类似的问题,但我不想使用该解决方案,因为我的关键字太多。这样做有什么好主意吗?
【问题讨论】:
-
只是为了让我自己清楚这个问题:你想要数字中的字符串吗?
-
您链接到的已接受答案的第二部分仅定义了一次枚举值。因为您无论如何都需要定义适合您的枚举。
-
不,我想要其他条件和计算中的字符串,我想要字符串中的数字
-
如果您的编译器支持每个宏 200 多个参数(即您没有使用 Visual C++),请查看此答案:stackoverflow.com/a/31362042/2482998。库版本是here(免责声明:我写的)。