调用ENUM_WITH_STRING_CONVERSIONS 宏的时候,T变量是枚举的名字,根据__VA_ARGS__可变参数初始化枚举的具体类型。 ToString是枚举转字符串函数,#__VA_ARGS__ 是把可变参数列表转为字符串,这些字符串就是枚举的字符串,然后解析具体字符,字符的位置与枚举初始化的位置一直,取枚举的字符串表示的时候可以根据把枚举转...
enum class E2 { A = 1, C = 2 };// 1. 强枚举类型不会将枚举元素暴露在外部作用域 cout << (int)(E1::A) << endl;int A = 100;// 2. 不相关的两个枚举类型不能直接比较,编译报错 cout << (E1::B == E2::C ? "相等" : "不相等") << endl; //error cout << (E1::B ==...
枚举类的最后一个优点是可以设置枚举的大小 - 您可以使用任何有符号或无符号整数类型。它默认为int,但您也可以使用char,unsigned long等。这将确保编译器之间的兼容性。enum class Colors : char { RED = 1, GREEN = 2, BLUE = 3 };但是在C ++ 11中,我们可以做得更好,使用cstdint指定枚举的确切大小 C...
enumOther { One, Two, Three }; enum Week week = Mon; // 1. 允许非枚举值赋值给枚举类型, 允许其他枚举类型的值赋值给当前枚举类型 week = 100; //ok week = One; //ok // 2. 枚举值具有外层作用域,容易造成名字冲突 int One = 100; //error // 3. 不同类型的枚举值可以直接比较 if (we...
(2)接着利用新的枚举类型enumType声明这种类型的变量:enumType Weekday'就像使用基本变量类型int声明变量一样,如int a;也可以在定义枚举类型时定义枚举变量enum enumType {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday}Weekday; 然而与基本变量类型不同的地方是,在不进行强制转换的前提下,只能将...
5、【enum(枚举)】的命名规则: e_<枚举名> 6、【union(共用)】的命名规则: u_<结构名> 4.1、共用的成员变量的命名规则: mv_<变量名> 4.2、共用的成员函数的命名规则: mf_<函数名> 4.3、共用的静态变量的命名规则: sv_<变量名> 4.4、共用的静态函数的命名规则: sf_<函数名> ...
枚举(enum),表示为列举、排列说明的意思。其作用将有限个的特定数据组合在一起,分别给这些数据取一个别名。举个例子,画一张地图需要用到很多颜色,通常用数字来表示这些颜色。如红色是 0 ,蓝色是 1。当程序编写到一定规模的时候,可能就忘记了什么数字代表什么颜色,还得返回去查询,就很麻烦。如此一来,...
enum class..enum class转整型最安全的做法就是使用std::to_underlying,虽然这玩意C++23才有,但自己写一个也是很简单的。就你期望的用法而言,可以参考标准库future中std::lau
2、枚举(enum) 3、 联合(union) 1、结构体(struct) 1.0 结构体类型的声明 我们通常会用一个变量来定义一个事物,就比如我们要进行求和,我们通常会创建一个sum的变量来存放求和的结果,最终再打印sum,此时的sum就表示我们最终的求和结果。 但是,在生活中,有很多事物很难用一两句话来表示,就比如说一个学生,一个...
enum enum_name {/*enum_table*/} enum_val; 1. 其中: enum:枚举类型关键字,声明后面定义的是枚举类型。 :枚举名称,相当于class后面跟的类名称。 :枚举元素表,该枚举枚举类型仅能使用元素表中的枚举元素(或称枚举常量)。 :[可选] 声明枚举类型后,可以紧跟着一个枚举对象,也可以分开。如,以下两段代码作用...