2010-06-08 3 views
9

Как я случайно выбираю значение для типа перечисления в C++? Я хотел бы сделать что-то вроде этого.генерация случайных перечислений

enum my_type(A,B,C,D,E,F,G,h,J,V); 
my_type test(rand() % 10); 

Но это незаконно ... нет неявного преобразования из int в тип перечисления.

+2

static_cast является хорошим другом в таких ситуациях. –

ответ

21

Как насчет:

enum my_type { 
    a, b, c, d, 
    last 
}; 

void f() { 
    my_type test = static_cast<my_type>(rand() % last); 
} 
+1

+1 для менее жесткого кодирования, но я рекомендую стиль static_cast для C++. – Bill

+0

Конечно, мой C++ ржавый, хороший улов. – zildjohn01

+2

Это не будет работать, если значения перечисления не будут смежными. – einpoklum

7

Там нет неявного преобразования, но явный один будет работать:

my_type test = my_type(rand() % 10); 
+0

Некоторые лица, упомянутые в принятом ответе, что неявное преобразование не будет работать, если значения перечисления не будут смежными. Это также относится к этому? –

Смежные вопросы