我在C ++ 11中有一个enum class
:
enum class eDays{ SUNDAY, MONDAY, /*...*/ };
enum class
设置值的命名空间,因此必须像这样使用它:
eDays::SUNDAY
我想设置一个名称空间块,因此不需要每次都指定名称空间:
namespace eDays {
vector<eDays> vec = { MONDAY, SUNDAY, /*...*/ };
}
代替:
vector<eDays> vec = { eDays::MONDAY, eDays::SUNDAY, /*...*/ };
我想念什么?
答案 0 :(得分:5)
使用枚举类,您不能。
正如本杰明·巴鲁瓦(Benjamin Barrois)所说,“枚举类的工作方式类似于类,因此eDays
不是名称空间,而是类名”; using directives可能不适用。
如果您希望能够编写以下内容,那么还有其他解决方案。
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>
}