同じ列挙値を別々のタイプで再利用する方法はありますか?次のようなことができるようにしたいと思います。
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行目。これを行う正しい方法はありますか、それとも常に一意の列挙値を使用することになっていますか?他の誰かのコードを含めている場合、これが常に保証されるとは想像できません。