有没有办法在不同的类型中重用相同的枚举值?我希望能够进行以下操作:

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/

10-11 18:14