【发布时间】:2013-06-13 14:44:34
【问题描述】:
参考https://stackoverflow.com/a/5094430/391104
//typedef enum {Unknown = -1 Linux=7, Apple=2, Windows=100} OS_type;
DEFINE_ENUM_WITH_STRING_CONVERSIONS(OS_type, (Linux)(Apple)(Windows))
int main()
{
OS_type t = Windows;
std::cout << ToString(t) << " " << ToString(Apple) << std::endl;
}
我遇到的问题是:
1> OS_type 是在库中定义的,我无权更改它。
2>另外,枚举的值是自定义的!
我该怎么办?
【问题讨论】:
-
只需使用
switch选择字符串,正如您链接到的答案中所示... -
在这种情况下,您需要手动创建枚举值的字符串表示或向库维护者提交报告并要求他们提供枚举字符串表示
-
修改
DEFINE_ENUM_WITH_STRING_CONVERSIONS,使其实际上不定义枚举,但仍定义字符串转换。 -
@n.m,你能告诉我怎么做吗?
-
我可以,但这有什么好玩的?
标签: c++