使用枚举器的好方法

时间:2014-06-10 03:41:52

标签: c++ c++11 enums type-conversion

在我的代码中,我需要使用枚举器来确保只有一组值可以分配给某些实例但是,我厌倦了从intenum类型的转换,反之亦然。是否有像int enum这样的东西来避免那些丑陋的static_cast

1 个答案:

答案 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)。您仍然可以指定基础类型,但现在允许隐式转换。

Live demo