在我的代码中,我需要使用枚举器来确保只有一组值可以分配给某些实例但是,我厌倦了从int
到enum
类型的转换,反之亦然。是否有像int enum
这样的东西来避免那些丑陋的static_cast
?
答案 0 :(得分:1)
如果要允许枚举器和基础类型变量之间的隐式转换,请不要使用C ++ 11的范围枚举。
enum class scoped : unsigned
{
Enumerator_1,
};
enum /*class*/ unscoped : unsigned
{
Enumerator_1,
};
int main()
{
unsigned a = static_cast<unsigned>(scoped::Enumerator_1); // explicit conv
unsigned b = unscoped::Enumerator_1; // implicit conv allowed
}
具体而言,请勿使用enum class
(或enum struct
)。您仍然可以指定基础类型,但现在允许隐式转换。