请参阅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&GT; OS_type在库中定义,我无权更改它。
2 - ;另外,枚举的值是自定义的!
我该怎么办?
答案 0 :(得分:0)
只为流输出操作符提供重载:
std::ostream& operator <<(std::ostream& dst, const OS_type& ostype)
{
switch (ostype) {
case Unknown: dst << "Unknown"; break;
case Linux: dst << "Linux"; break;
case Apple: dst << "Apple"; break;
case Windows: dst << "Windows"; break;
default: dst << "invalid";
}
return dst;
}
您现在可以这样做:
int main()
{
OS_type ostype = Apple;
std::cout << ostype << '\n';
}