有一个函数需要枚举作为参数。
据我所知,如果我必须向这个函数传递一个整数,建议将其明确转换为枚举类型,原因是并非所有整数都是有效的枚举值。
根据MSDN">MSDN:
“static_cast运算符可以将整数值显式转换为枚举类型。如果整数类型的值不在枚举值范围内,则结果枚举值未定义。”
根据C++标准5.2.9静态转换->10:
"整数或枚举类型的值可以被显式转换为枚举类型。如果原始值在枚举值范围内(7.2),则该值不变。否则,结果值是未指定的(可能不在该范围内)。"
那么,在这种情况下使用
void myfunc(myEnum input);
据我所知,如果我必须向这个函数传递一个整数,建议将其明确转换为枚举类型,原因是并非所有整数都是有效的枚举值。
根据MSDN">MSDN:
“static_cast运算符可以将整数值显式转换为枚举类型。如果整数类型的值不在枚举值范围内,则结果枚举值未定义。”
根据C++标准5.2.9静态转换->10:
"整数或枚举类型的值可以被显式转换为枚举类型。如果原始值在枚举值范围内(7.2),则该值不变。否则,结果值是未指定的(可能不在该范围内)。"
那么,在这种情况下使用
static_cast
有什么意义呢?是否有某些选项可以在枚举范围之外的值上引发异常(除了编写明确的代码)?