Ошибка Visual Studio C++ E2373, не вызывающая ошибку компиляции (или предупреждение) – почему?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Ошибка Visual Studio C++ E2373, не вызывающая ошибку компиляции (или предупреждение) – почему?

Сообщение Anonymous »

Я преобразовал несколько простых перечислений типа int в строго типизированные классы перечислений.
И я был шокирован, обнаружив, что приведенный ниже код не вызывает никаких ошибок сборки компилятора или предупреждений:

Код: Выделить всё

enum class SimScreens : unsigned int { ... }
enum class XXX_SCREEN: unsigned int { ... }

bool xxxAutomation::SimScreenChange(SimScreens screenNumber) {
switch (screenNumber)
{
case XXX_SCREEN::XXX_SCREEN_XXX_MAIN:
{
// code
break;
}
case SimScreens::SIM_SCREEN__MAIN_MENU:
{
// other code
break;
}
default:
break;
}

return true;
}
Редактор VS подчеркивает красный цвет и сообщает об этом:

Код: Выделить всё

Error (active)  E2373   this constant expression has type "XXX_SCREEN" instead of the required "SimScreens" type    xxx xxxAutomation.cpp   233
Но с компилятором все в порядке:

Код: Выделить всё

1>------ Build started: Project: xx_DLL, Configuration: Debug Display Win32 ------
1>xxdll.vcxproj -> C:\xx\xxdll.dll
1>Performing Custom Build Step
1>        1 file(s) copied.
2>------ Build started: Project: XXX, Configuration: Debug Display Win32 ------
2>xxxAutomation.cpp
2>XXXX.vcxproj -> C:\XXX.exe
========== Build: 2 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
Пытаюсь выяснить, не упущен ли какой-то параметр, чтобы убедиться, что это ошибка компилятора.


Подробнее здесь: https://stackoverflow.com/questions/798 ... arning-why
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»