[VC][trick] проверка enum
От: superlexx  
Дата: 26.11.09 20:37
Оценка: 128 (10) +1
Если хочется проверить, совпадает ли значение некоего enum с одним из именованных значений, до сих пор использовалась соответствующая функция:
enum E
{
    v0 = 42,
    v1 = 4711
};

bool IsEValid (const E value)
{
    return value == v0 || value == v1;
}
Неудобно, что нужно не забывать синхронизировать enum c функцией. На помощь приходит C4062:
// enumerator 'x' in switch of enum 'y' is not handled
#pragma warning (error: 4062)

bool IsEValidSynchronized (const E value)
{
    switch (value)
    {
    case v0:
    case v1:
        return true;
    }
    return false;
}
, и теперь добавление или удаление нового именованного значения E приводит к ошибке компиляции, пока не подправлен switch.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.