C++ 不同的枚举,相同的值
是否可以使用相同的值创建两个不同的枚举? 比如说,C++ 不同的枚举,相同的值,c++,enumeration,C++,Enumeration,是否可以使用相同的值创建两个不同的枚举? 比如说, enum direction{ LEFT, RIGHT, UP, DOWN, NONE } enum color{ RED, GREEN, BLUE, NONE } 编译器会说有两个“NONE”声明。 有办法吗?有两种办法。一种方法是使用名称空间包装枚举并防止值污染全局名称空间: namespace direction { enum direction {
enum direction{
LEFT,
RIGHT,
UP,
DOWN,
NONE
}
enum color{
RED,
GREEN,
BLUE,
NONE
}
编译器会说有两个“NONE”声明。
有办法吗?有两种办法。一种方法是使用名称空间包装枚举并防止值污染全局名称空间:
namespace direction {
enum direction {
LEFT,
RIGHT,
UP,
DOWN,
NONE
};
}
namespace color {
enum color {
RED,
GREEN,
BLUE,
NONE
};
}
您还可以使用新的C++11方式(如果您的编译器支持),并使用“强类型枚举”
语法direction::NONE
或color::NONE
都可以使用这两种方法,但有一个主要区别。在第一种情况下,枚举仍将隐式转换为int。这意味着你可以写作
intfoo=方向::无代码>
一切都很好
在第二种情况下,这将是一个编译器错误,因为foo与direction的类型不同。你可以通过这样做来解决这个问题
direction foo=方向::无代码>
这可能对你有用,也可能不对。如果您需要将其转换为int,欢迎使用static\u cast(foo)
来获得整数类型。谢谢,第一种方法对于我现在所做的工作似乎更有效,所以我将坚持使用它。
enum class direction {
LEFT,
RIGHT,
UP,
DOWN,
NONE
};
enum class color {
RED,
GREEN,
BLUE,
NONE
};