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.
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.
Wie wäre:
enum my_type {
a, b, c, d,
last
};
void f() {
my_type test = static_cast<my_type>(rand() % last);
}
+1 für weniger harte Codierung, aber ich empfehle die C++ - Stil static_cast. – Bill
Natürlich ist mein C++ rostig, guter Haken. – zildjohn01
Dies funktioniert nicht, wenn die Enum-Werte nicht zusammenhängend sind. – einpoklum
Es gibt keine implizite Konvertierung, aber eine explizite eine funktioniert:
my_type test = my_type(rand() % 10);
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? –
static_cast ist ein guter Freund in solchen Situationen. –