为什么"cout << Color::green"不编译?
why doesn't "cout << Color::green" compile?
我在测试中遇到了这个问题。
我知道我可以做这样的事情:
enum class Color { red, green = 1, blue };
Color c = Color::blue;
if( c == Color::blue )
cout << "bluen";
但是当我用cout << Color::green
替换cout << "bluen";
时,它甚至不编译。为什么不编译?
发生
此错误是因为C++没有预定义的打印enum
方式。您需要根据需要定义一个运算符<<
,用于打印Color
枚举类型的对象。
例如,如果要打印数值,请将颜色转换为运算符内部的int
:
ostream& operator<<(ostream& ostr, const Color& c) {
ostr << (int)c;
return ostr;
}
演示。
如果要将enum
值打印为文本,请参阅此问答以获取示例实现。