有没有办法在不同的类型中重用相同的枚举值?我希望能够进行以下操作:
enum DeviceState { UNKNOWN, ACTIVE, DISABLED, NOTPRESENT, UNPLUGGED };
enum DeviceType { UNKNOWN, PLAYBACK, RECORDING };
int _tmain(int argc, _TCHAR* argv[])
{
DeviceState deviceState = DeviceState::UNKNOWN;
DeviceType deviceType = DeviceType::UNKNOWN;
return 0;
}
这对我来说很有意义,但对C++编译器却没有意义-它提示:上面第二行的
error C2365: 'UNKNOWN' : redefinition; previous definition was 'enumerator'
。有没有这样做的正确方法,还是应该始终使用唯一的枚举值?我无法想象这是否总是可以保证是否包含其他人的代码。 最佳答案
您可以并且应该将枚举包含在namespace
中:
namespace DeviceState
{
enum DeviceState{ UNKNOWN, ACTIVE, DISABLED, NOTPRESENT, UNPLUGGED };
}
namespace DeviceType
{
enum DeviceType{ UNKNOWN, PLAYBACK, RECORDING };
}
//...
DeviceType::DeviceType x = DeviceType::UNKNOWN;
关于c++ - 在单独的枚举类型中重用枚举值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10411357/