Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > приведение int к enum


Автор: itan 12.12.2006, 14:04
Вот есть у меня свой тип данных :
Код

enum Type {Type1 = 10, Type2 = 20, Type3 = 30 };

и есть функция, которая принимает этот тип в качестве параметра:
Код

void func(Type t)
{
    Type tNew = t;
         ...

}

Вопрос в том - как мне можно защитить функцию func от передачи ей значений не свойственных типу Type , например таким образом:
Код

func(static_cast<Type>(45))

Для усложнения задачи предположим, что количество "типов" у Type может быть большим и разброс их значений существеннен.

Автор: JackYF 12.12.2006, 14:29
enum - это всего лишь нумерованные целые константы.
Поэтому при желании любой может в твою функцию передать любую целую константу.

Как вариант - сделай место этого битовое поле, эти самые константы - степени двойки.
Или еще как-то...
В самой функции все равно придется отсекать неправильные значения.
А вот насколько быстро и легко это возможно будет сделать - уже зависит от значений твоих констант.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)