Ich habe C++-Code, der ein Bitset verwendet, um zu speichern, welche Werte eines Enums in meinen Datenstrukturen gefunden wurden (es ist eigentlich etwas komplexer, aber das spielt für die Frage keine Rolle).
Dies bedeutet, dass wenn ich ein Enum so habe:
enum Color
{
RED
, GREEN
, BLUE
};
Möchte ich mein Bitset so definieren:
std::bitset<3>
Natürlich möchte ich den Wert 3 nicht fest codieren.
In einigen Fällen kann ich einfach einen "Terminator" zum Enum hinzufügen, so wie hier:
enum Color
{
RED
, GREEN
, BLUE
, _COLOR_TERMINATOR
};
Und ich kann dies schreiben:
std::bitset<_COLOR_TERMINATOR>
Aber das kann ich nicht bei allen meinen Enums tun. Wenn ich dies bei einigen meiner Enums machen würde, würden Code-Checker (wie Lint) sich beschweren, dass nicht alle Enum-Werte in einer switch-Anweisung verwendet werden.
Gibt es eine Möglichkeit, das Maximum der Werte in einem Enum zu erhalten, ohne etwas im Enum selbst zu ändern? Zum Beispiel etwas wie std::max
?
Verwende Visual Studio 2013 und C++.
Danke.