7
我想上的作用域-枚举与该无符号整型切换:接通作用域枚举
const enum struct EnumType : unsigned int { SOME = 1, MORE = 6, HERE = 8 };
我接收一个const unsigned int的参考,我:
作为枚举定义试图根据枚举值检查该值。
void func(const unsigned int & num)
{
switch (num)
{
case EnumType::SOME:
....
break;
case EnumType::MORE:
....
break;
....
default:
....
}
}
这将导致一个语法错误:Error: This constant expression has type "EnumType" instead of the required "unsigned int" type.
现在,每个交换机上使用static_cast
,如:
case static_cast<unsigned int>(EnumType::SOME):
....
break;
case static_cast<unsigned int>(EnumType::MORE):
....
break;
修复语法错误,虽然在每种情况下,声明没有按铸造看起来这不是一个好办法。我是否真的需要在每种情况下施放,还是有更好的方法?
在我看来强类型枚举的整点是,他们是......嗯,强类型,所以没有隐式转换。所以是的,你需要投。 编辑:我现在看到你不是问你是否需要施放,而是你是否需要施放每个案例。对不起这是我的错。 – antred 2014-11-05 22:24:50