2010-06-08 14 views
9

Wie wähle ich zufällig einen Wert für einen Aufzählungstyp in C++? Ich möchte so etwas machen.Generierung von zufälligen enums

Aber das ist illegal ... es gibt keine implizite Konvertierung von int zu einem Enum-Typ.

+2

static_cast ist ein guter Freund in solchen Situationen. –

Antwort

21

Wie wäre:

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

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

+1 für weniger harte Codierung, aber ich empfehle die C++ - Stil static_cast. – Bill

+0

Natürlich ist mein C++ rostig, guter Haken. – zildjohn01

+2

Dies funktioniert nicht, wenn die Enum-Werte nicht zusammenhängend sind. – einpoklum

7

Es gibt keine implizite Konvertierung, aber eine explizite eine funktioniert:

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

Einige Personen in der angenommenen Antwort erwähnt, dass implizite Konvertierung wird nicht funktionieren, wenn die Enum-Werte nicht zusammenhängend sind. Gilt das auch für das? –