enum class..enum class转整型最安全的做法就是使用std::to_underlying,虽然这玩意C++23才有,但自己写一个也是很简单的。就你期望的用法而言,可以参考标准库future中std::lau
1、实现方法 在开发中遇到的一个场景,需要自动生成enum class,并且还要有enum与string相互转换函数,当需要扩展enum class的时候,只需要在初始化的时候改动 enum class,不需要改动enum与string相互转换函数,转换函数都是根据enum自动生成。 github tool/enum_class at main · C-CX/toolgithub.com/C-CX/tool/tr...
在C语言中也是如此,对于一个复杂对象,C语言提供了结构体,就拿上面的学生例子来说,对于这么一个复杂对象的描述,C语言是这样实现的。 代码语言:javascript 代码运行次数:0 运行 AI代码解释 #include<stdio.h>struct stu{char name[20];//姓名int age;//年龄char id[12];//学号charclass[20];//班级};//切...
enum class E1 { A = 1, B = 2 };enum class E2 { A = 1, C = 2 };// 1. 强枚举类型不会将枚举元素暴露在外部作用域 cout << (int)(E1::A) << endl;int A = 100;// 2. 不相关的两个枚举类型不能直接比较,编译报错 cout << (E1::B == E2::C ? "相等" : "不相等") <<...
1) C++98 的 enum是“非域内的”;而 C++11 的 enum class是“域内的”,限制了枚举成员只在域内可见 2) enum class 的缺省潜在类型 (underlying type) 是 int 型,而 enum 没有缺省潜在类型 3) enum class一般总是前置声明,而 enum 只有在指定了潜在类型时才可以是前置声明 参考资料 《Effective Modern ...
C/C++ C++11 enum class enum class
强类型枚举使用enum class语法来声明,如下: enumclassEnumeration{ VAL1, VAL2, VAL3=100, VAL4 }; 这样,枚举类型时安全的,枚举值也不会被隐式转换为整数,无法和整数数值比较,比如(Enumeration::VAL4==10会触发编译错误)。 另外枚举类型所使用的类型默认为int类型,也可指定其他类型,比如: ...
1. 什么是枚举类型?枚举(enum),表示为列举、排列说明的意思。其作用将有限个的特定数据组合在一起,分别给这些数据取一个别名。举个例子,画一张地图需要用到很多颜色,通常用数字来表示这些颜色。如红色是 0 ,蓝色是 1。当程序编写到一定规模的时候,可能就忘记了什么数字代表什么颜色,还得返回去查询,就...
enum class E2 { A = 1, C = 2 }; // 1. 强枚举类型不会将枚举元素暴露在外部作用域 cout << (int)(E1::A) << endl; int A = 100; // 2. 不相关的两个枚举类型不能直接比较,编译报错 cout << (E1::B == E2::C ? "相等" : "不相等") << endl; //error ...
enum class Colors : char { RED = 1, GREEN = 2, BLUE = 3 };但是在C ++ 11中,我们可以做得更好,使用cstdint指定枚举的确切大小 C ++遇到的一个问题是缺乏提供固定的,定义明确的大小的标准类型。例如,有时您希望拥有一个32位整数,而不仅仅是一个在不同体系结构上可能具有不同大小的int。在C ++...