C ++ 11枚举类名称空间块

伊戈尔

enum class在C ++ 11中有一个

enum class eDays{ SUNDAY, MONDAY, /*...*/ };

enum class设置这些值的命名空间,以便它有一个像使用:

eDays::SUNDAY

我想设置一个名称空间块,因此不需要每次都指定名称空间:

namespace eDays {
    vector<eDays> vec = { MONDAY, SUNDAY, /*...*/ };
}

代替:

vector<eDays> vec = { eDays::MONDAY, eDays::SUNDAY, /*...*/ };

我想念什么?

YSC

使用枚举类,您不能。

正如本杰明·巴鲁瓦(Benjamin Barrois)所说:“枚举类的工作方式类似于类,因此eDays它不是名称空间,而是类名”;使用指令可能不适用。

如果您希望能够编写以下内容,那么还有其他解决方案。

std::vector<eDays> vec = { Monday, Tuesday, /*...*/  };

实际名称空间+ enum

namespace eDays
{
    enum t { Monday, Tuesday, /*...*/ };
}

实际名称空间+(静态)常量

namespace eDays
{
    static const int Monday  = 0;
    static const int Tuesday = 1;
    // ...
}

两者都会让你写:

{
    using namespace eDays;
    std::vector<int> vec = { Monday, Tuesday, /*...*/  }; // or <t>
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章