从int到enum类类型的转换可能吗?

时间:2018-11-05 04:43:14

标签: c++ strongly-typed-enum

我有一种使用c ++语言的情况,在这种情况下,我有一个从1到7的整数值供输入到平日的方法中。因为我可以使用staric_cast轻松将枚举类类型转换为整数,但是从整数转换为枚举有点问题。引起的问题是可以将数字转换为枚举类类型吗?因为在另一个生成整数的方法中,必须调用枚举类基于工作日输入的方法进行工作日更新。 该更新方法仅采用枚举类类型I.e 枚举类工作日 { 星期一= 1, 。 。 星期日 } 方法无效updateWeekday(weekday e)。 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

是的,您可以两种方式转换: int到枚举类枚举类到int 。这个例子应该是不言自明的:

enum class Color{Red = 1, Yellow = 2, Green = 3, Blue = 4};
std::cout << static_cast<int>(Color::Green) << std::endl; // 3
// more flexible static_cast - See Tony's comment below
std::cout << static_cast<std::underlying_type_t<Color>>(Color::Green) << std::endl; // 3
std::cout << (Color::Green == static_cast<Color>(3)) << std::endl; // 1
std::cout << (Color::Green == static_cast<Color>(2)) << std::endl; // 0

您可以自己here试试。