相关文章推荐
踢足球的围巾  ·  C# ListView Display - ...·  10 月前    · 
活泼的饭卡  ·  jquery datetimepicker ...·  1 年前    · 
气势凌人的打火机  ·  WPF ...·  1 年前    · 

c++ enum class ostream operator

在 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

希望这段代码对你有所帮助!

  •