2010-06-08 17 views
9

C++'da bir enum türü için rastgele bir değer nasıl seçerim? Böyle bir şey yapmak isterim.rasgele enumsler oluşturma

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

Ancak bu yasa dışıdır ... int'den enum türüne dolaylı bir dönüşüm yoktur.

+2

static_cast tür durumlarda iyi bir dosttur. Daha az sabit kodlama için –

cevap

21

ne dersiniz:

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

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

+1, ancak C++ stili static_cast'i öneririm. – Bill

+0

Tabi ki, C++'m paslı, iyi bir yakalamadır. – zildjohn01

+2

Enum değerleri bitişik değilse, bu çalışmaz. – einpoklum

7

Hiçbir örtük dönüştürme olur, ancak açık bir tek çalışacaktır:

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

Bazı kişiler kabul edilen yanıtta belirtilen, enum değerlerinin bitişik olmaması durumunda örtük dönüştürme işleminin çalışmaz. Bunun için de geçerli mi? –