C++ 枚举类 (enum class) 转 int:类型安全与强制转换
在 C++ 中,枚举类 (enum class) 不能直接转换为整型 (int)。枚举类是一种强类型的枚举,它不会隐式地转换为其他类型,包括整型。这是为了确保类型安全性和代码的清晰性。\n\n然而,如果需要将枚举类转换为整型,可以通过强制类型转换来实现。可以将枚举类的值转换为整型,并将其赋给一个整型变量。例如:\n\ncpp\nenum class MyEnum {\n Value1,\n Value2,\n Value3\n};\n\nint main() {\n MyEnum myEnum = MyEnum::Value2;\n int intValue = static_cast<int>(myEnum);\n return 0;\n}\n\n\n在上面的示例中,使用 static_cast 将枚举类的值转换为整型,并将其赋给 intValue 变量。请注意,这种转换可能会导致信息丢失,因为整型可能无法表示所有枚举值。\n\n另外,还可以在枚举类定义中为每个枚举值显式地指定整型值,这样就可以通过枚举类的整型值来实现转换。例如:\n\ncpp\nenum class MyEnum : int {\n Value1 = 100,\n Value2 = 200,\n Value3 = 300\n};\n\nint main() {\n MyEnum myEnum = MyEnum::Value2;\n int intValue = static_cast<int>(myEnum);\n return 0;\n}\n\n\n在上面的示例中,MyEnum 的枚举值分别被显式地指定为整型值。然后,可以使用 static_cast 将枚举类的值转换为整型,并将其赋给 intValue 变量。\n\n需要注意的是,枚举类的整型值转换仍然需要显式的强制类型转换,而不能通过隐式转换来实现。
原文地址: https://www.cveoy.top/t/topic/pTrl 著作权归作者所有。请勿转载和采集!