-2

我在一次测试中遇到了这个问题。

我知道我可以做类似的事情:

enum class Color { red, green = 1, blue };
Color c = Color::blue;

if( c == Color::blue )
cout << "blue\n";

但是当我替换cout << "blue\n";为 时cout << Color::green,它甚至无法编译。为什么不编译?

4

1 回答 1

5

发生此错误是因为 C++ 没有预定义的打印enum. 您需要根据需要定义一个<<用于打印Color枚举类型对象的运算符。

例如,如果您想打印数值,请将颜色投射到int运算符内部:

ostream& operator<<(ostream& ostr, const Color& c) {
    ostr << (int)c;
    return ostr;
}

演示。

如果您想将enum值打印为文本,请参阅此问答以获取示例实现

于 2018-04-16T17:57:21.937 回答