Повторное использование значений перечисления в отдельных типах перечисления

Есть ли способ повторно использовать одно и то же значение перечисления в отдельных типах? Я хотел бы иметь возможность что-то вроде следующего:

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'на строку 2 выше. Есть ли правильный способ сделать это, или я должен всегда использовать уникальные значения перечисления? Я не могу себе представить, что это всегда можно гарантировать, если я включаю чужой код.

19
задан David Ching 24 April 2019 в 05:45
поделиться