嵌套在类中的C ++ 11枚举类的缩写语法?

时间:2015-10-04 14:33:04

标签: c++11 enums nested

我使用的是一个C ++ 11库,它有一个带有嵌套在类中的枚举类的头:

class ClassWithARatherLongName
{
public:
    enum class EnumWithARatherLongName
    {
        VALUE1,
        VALUE2,
        VALUE3
    };
    (other code)
};

然后我在我的代码中使用枚举器:

void foo()
{
    ... ClassWithARatherLongName::EnumWithARatherLongName::VALUE1 ...
}

这很有效,但很乏味。有没有办法缩写语法?

理想情况下,我希望能够写出类似的内容:

void foo()
{
    (some directive that allows to use an abbreviated syntax)
    ... VALUE1 ...
}

2 个答案:

答案 0 :(得分:2)

您可以使用typedefusing创建"快捷方式":

using E = ClassWithARatherLongName::EnumWithARatherLongName;
E::VALUE1

答案 1 :(得分:0)

只需添加一个typedef:

void foo()
{
    typedef ClassWithARatherLongName::EnumWithARatherLongName e;
    e::VALUE1
}

您可以使用命名空间来缩短名称。