微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我们不能在 c++ 中将 enum 类的值打印为 enum

如何解决为什么我们不能在 c++ 中将 enum 类的值打印为 enum

尝试打印枚举类对象时出错。我在尝试打印时遇到错误。我哪里做错了?

#include <iostream>

using namespace std;

int main()
{

enum weekdays{sunday,monday,tuesday};
cout<<monday<<endl; // getting value as 1 as i expected.


enum class Weekday{sunday,tuesday};
enum class Holiday{sunday,saturday};

Weekday wday=Weekday::monday; 

cout<<Weekday::monday<<endl; // getting error
cout<<wday<<endl; //getting error
return 0;
}

解决方法

为什么我们不能在c++中将枚举类的值打印为枚举

因为枚举类不同于枚举。区别之一是与 enum 不同,enum 类实例不会隐式转换为基础整数类型。由于您没有为枚举类定义输出流插入运算符,因此您无法将其插入到输出流中。

我哪里做错了?

错误是假设枚举类的行为与枚举相同。

如果我想知道 Weekday wday=Weekday::monday 中存储的值;我怎么知道。??

通过显式转换。您可以使用静态转换。

,

由于 enum classenum 具有更强的类型安全性,您需要明确请求转换为基础整数值:

#include <type_traits>
...
std::cout << static_cast<std::underlying_type_t<Weekday>>(Weekday::monday) << '\n';

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。