enums

Um einfache Enums kurz zu halten, können Werte des Basistyps einfach zugewiesen werden.

Digit enums int
{
  One   = 1;
  Two   = 2;
  Three = 3;
  Four  = 4;
  Five  = 5;
  Six   = 6;
};

Enumklassen sind normale Klassen, die öffentliche konstante, statische Member haben:

Color enums thistype
{
  private: RedValue, GreenValue, BlueValue is byte;

  construct( RedValue, GreenValue, BlueValue );
  
  Red   = thistype( 255,   0,   0 );
  Green = thistype(   0, 255,   0 );
  Blue  = thistype(   0,   0, 255 );
}

Eine Funktion

void set( Color color );

weiß nun ja, dass sie eine Color bekommt und kann nun auf zwei Arten gerufen werden:

set( Color::Red );
set( Red );

Der zweite Aufruf ohne den Typen erlaubt problemloses Umbenennen von Color. Eine Überladung von set mit AlertLevel, bei der es ein AlertLevel::Red gäbe, erzwingt eine Fehlermeldung, bzw. man muss entweder set( Color::Red ), bzw. set( AlertLevel::Red ) rufen.