2010-06-08 17 views
9

¿Cómo selecciono aleatoriamente un valor para un tipo de enumeración en C++? Me gustaría hacer algo como esto.generar enumeraciones aleatorias

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

Pero esto es ilegal ... no hay una conversión implícita de int a un tipo enum.

+2

static_cast es un buen amigo en este tipo de situaciones. –

Respuesta

21

¿Qué tal:

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

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

+1 por menos codificación rígida, pero recomiendo el estilo C++ static_cast. – Bill

+0

Por supuesto, mi C++ está oxidado, buena captura. – zildjohn01

+2

Esto no funcionará si los valores enum no son contiguos. – einpoklum

7

No hay conversión implícita, pero una explícita funcionará:

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

Alguna persona mencionó en la respuesta aceptada que la conversión implícita no funcionará si los valores enum no son contiguos. ¿También se aplica a esto? –

Cuestiones relacionadas