enum, switch, default, warnings
enum E { A, B, C };
int getE();
switch((E)getE())
{
case A: handleA(); break;
case C: handleC(); break; // ой, потеряли B!
default: oops("Value outside enum!");
}
Как сделать то же самое, но чтобы компилятор ругался, если я не обработаю часть значений enum? Если я выброшу default, то предупреждения будут («enumeration value ‘B’ not handled in switch»), но потеряется поведение по умолчанию. Можно вместо break сделать goto, а сразу за switch разместить код обработки ошибки. А как сделать по-человечески?