我想知道是否可以为 C++ 中的枚举分配默认值?也就是说,如果我们尝试将一个值转换为这个特定的枚举,并且该值不存在,则让它返回一个默认的枚举值...
enum ExampleEnum : int
{
DefaultValue = 0,
Value1 = 1,
Value2 = 2;
};
// I want this to return 0 (DefaultValue) as the value (3) is not defined in ExampleEnum.
const ExampleEnum invalid_enum = static_cast<ExampleEnum>(3);
Run Code Online (Sandbox Code Playgroud)
不,没有这样的内置功能,您不能影响它将static_cast<ExampleEnum>执行的操作。当然,您可以自己编写一个函数,该函数将通过事先检查值来执行转换,并使用它来代替static_cast.
但还要注意,强制转换static_cast<ExampleEnum>(3)是有效的,并且这3是枚举类型的允许值。具有固定基础类型的枚举(例如,具有像您一样显式指定的类型的枚举)将其基础类型的所有值作为有效值。
枚举定义中的命名枚举器只是值子集的别名。在这种情况下,它们不会影响可能值的范围。
(但请注意,这对于没有固定基础类型的枚举是不同的。)