使用 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函数时会导致函数采取不该采取的行为,而第二个函数可能会好一些他仅仅是忽略了超出范围的值。 这就说明枚举所定义的类型并不是一个...
enum class cast? Jul 17, 2014 at 2:51am squarehead(24) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include <iostream>enumclassEnergyState :unsignedchar{ ON, OFF };intmain() { EnergyState state;unsignedchars; std::cin >> s; state =static_cast<EnergyState>(s);/...
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 如何防止命名冲突? 问题 我听到一些人建议使用 enum class,因为它是类型安全(type safety)的。这到底是什么意思? 回答 C++ 有两种枚举(enum), enum class enum 它们的使用也很简单,例如, 代码语言:javascript 代码运行次数:0 运行 AI代码解释 enum class Color { red, green, blue }; // enum ...
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...
enum class colorX { red, green, yellow }; int main() { //使用域运算符访问枚举体成员,强转后打印 std::cout << static_cast<int>(color::red) << std::endl; std::cout << static_cast<int>(colorX::red) << std::endl; std::cin.get(); ...
// Underlying type is unsigned int// for Flags. Must be explicitly specifiedusingnamespacePlatform::Metadata; [Flags]publicenumclassBitField:unsignedint{ Mask0 =0x0, Mask2 =0x2, Mask4 =0x4, Mask8 =0x8}; Enum1 e1 = Enum1::One;intv1 =static_cast<int>(e1);intv2 =static_cast<int...
*/enumclassColor2{RED=2,YELLOW,BLUE};r2 c2=Color2::RED;cout<<static_cast<int>(c2)<<endl;//必须转! 代码语言:javascript 代码运行次数:0 运行 AI代码解释 enumclassColor3:char;// 前向声明// 定义enumclassColor3:char{RED='r',BLUE};char c3=static_cast<char>(Color3::RED);...