使用 enum class 的语法来声明: enumclassresult { success, flase, unknow, }; 此种枚举为类型安全的。枚举类型不能隐式地转换为整数;也无法与整数数值做比较。 只能进行强转后进行比较 static_cast<int>(result1);
enum class UserInfoFields { uiName, uiEmail, uiReputation }; UserInfo uInfo; // as before … auto val = std::get<static_cast<std::size_t>(UserInfoFields::uiEmail)>(uInfo); 此时,可用模板函数,将枚举成员 UserInfoFields::uiEmail 和 std::size_t 类型联系起来 template<typename E> const...
} func1( static_cast<EType>( 2 ) ); func2( static_cast<EType>( -1 ) ); 上面的代码应该很清楚的说明了这样一种异常的情况了,在使用一个操出范围的整型值调用func1函数时会导致函数采取不该采取的行为,而第二个函数可能会好一些他仅仅是忽略了超出范围的值。 这就说明枚举所定义的类型并不是一个...
static_cast: 进行基础类型的转换 underlying_type: 模板类,用于获取枚举类型的基础类型 具体代码如下: // 例如下列结构体 // enum class MyEnum { // age = 0, // gender = 1 // }; MyEnum a = MyEnum::age; std::cout << static_cast<typename std::underlying_type<MyEnum>::type>(a); ...
enum class Color { red, green, blue }; // enum class enum Animal { dog, cat, bird, human }; // enum 两者的区别如下, 一:作用域不同 enum 中的 { } 大括号并没有将枚举成员的可见域限制在大括号内,导致 enum 成员曝露到了上一级作用域中。 代码语言:javascript 代码运行次数:0 运行 AI代...
enum class UserInfoFields { uiName, uiEmail, uiReputation }; UserInfo uInfo; // as before … auto val = std::get<static_cast<std::size_t>(UserInfoFields::uiEmail)>(uInfo); 1. 2. 3. 4. 5. 此时,可用模板函数,将枚举成员 UserInfoFields::uiEmail 和 std::size_t 类型联系起来 templat...
> public static <T extends Enum<T>> T valueOf(Class<T> enumType,String name):静态方法,用于返回指定枚举类中指定名称的枚举值。名称必须与在该枚举类中声明枚举值时所使用的标识符完全匹配,不允许使用额外的空白字符。 代码语言:javascript 代码运行次数:0 运行 AI代码解释 SeasonEnum seasonEnum = Season...
enum很像特殊的class,实际上enum声明定义的类型就是一个类。 1. final enum hr.test.Color { 2. 3. // 所有的枚举值都是类静态常量 4. public static final enum hr.test.Color RED; 5. public static final enum hr.test.Color BLUE; 6. public static final enum hr.test.Color BLACK; ...
#include<iostream>#include<utility>// for std::to_underlying() (C++23)intmain(){enumclassColor{red,blue,};Color color{Color::blue};std::cout<<color<<'\n';// won't work, because there's no implicit conversion to intstd::cout<<static_cast<int>(color)<<'\n';// explicit conversio...
(2)compareTo()方法: Enum实现了java.lang Comparable接口,因此可以比较象与指定对象的顺序。Enum中的compareTo返回的是两个枚举值的顺序之差。当然,前提是两个枚举值必须属于同一个枚举类,否则会抛出ClassCastException()异常。(具体可见源代码) Color.RED.compareTo(Color.BLUE); //返回结果 -1 ...