在 C++ 中,枚举类(enum class)是一种新的枚举类型,它与传统的 C++ 枚举类型(enum)相比有一些不同之处。其中一个主要的区别是,枚举类中的枚举常量是强类型的,因此不能直接与整数进行比较或转换。
如果你想要将枚举类对象输出到标准输出流(ostream),你需要定义一个输出运算符(operator<<)重载函数来实现。可以按照以下方式定义该函数:
#include <iostream>
enum class Color { Red, Green, Blue };
std::ostream& operator<<(std::ostream& os, const Color& c)
switch (c)
case Color::Red:
os << "Red";
break;
case Color::Green:
os << "Green";
break;
case Color::Blue:
os << "Blue";
break;
default:
os.setstate(std::ios_base::failbit);
break;
return os;
int main()
Color c = Color::Red;
std::cout << "The color is " << c << std::endl;
return 0;
在上述代码中,我们首先定义了一个枚举类 Color,其中包含三个枚举常量。接着,我们定义了一个输出运算符重载函数,它接受一个标准输出流对象和一个 Color 类型的参数。在该函数中,我们使用了一个 switch 语句来将 Color 对象转换为相应的字符串输出到输出流中。最后,该函数返回输出流对象的引用。
在主函数中,我们定义了一个 Color 类型的对象 c,并将其输出到标准输出流中。输出结果为:
The color is Red
希望这段代码对你有所帮助!