Ivo hat geschrieben:Hallo Xin, wie würdest du es nummerieren? Ich versuche aber wie soll ich erste switch definieren? Ich versuche die Schleife zu verstehen. Bsp du hast drei verschiedene Sorte Kaffee, Säfte und Tee. Als einfache Sachen. Keine neue Funktionen will ich noch binden, einfach die Schleife. Danke
Eine technisch nicht perfekte, aber einfache Möglichkeit. Man kann den Typ auch direkt in die Id kodieren.
Code: Alles auswählen
/* Headerfile */
class Command
{
enum CommandType { Kaffee, Saft, Tee }
CommandType Type;
unsigned int Id;
public:
Command( CommandType type, unsigned int id ) : Type( type ), Id( id ) {}
unsigned int GetId() const { return Id; }
CommandType GetType() const { return Type; }
static Command const Filterkaffee, Expresso, Cappuccino;
static Command const Orangensaft, Apfelsaft, Kirschsaft;
static Command const EarlGrey, Pfefferminz, Kamille;
};
/* .cpp */
Command Command::Filterkaffee( Command::Kaffee, 1 );
Command Command::Expresso( Command::Kaffee, 2 );
Command Command::Cappuccino( Command::Kaffee, 3 );
Command Command::Orangensaft( Command::Saft, 4 );
Command Command::Apfelsaft( Command::Saft, 5 );
Command Command::Kirschsaft( Command::Saft, 6 );
Command Command::EarlGrey( Command::Tee, 7 );
Command Command::Pfefferminz( Command::Tee, 8 );
Command Command::Kamille( Command::Tee, 9 );
Du kannst das Command fragen, was für einen Typ es ist (falls Du das brauchst). Du kannst die Id durchswitchen:
Code: Alles auswählen
void DoCommand( Command command )
{
switch( command.GetId() )
{
case 1: DoFilterKaffee();
case 2: DoExpresso();
}
}
Oder
Code: Alles auswählen
void DoCommand( Command command )
{
switch( command.GetType()
{
case Command::Kaffee:
{
switch( command.GetId() )
{
case 1: DoFilterKaffee();
case 2: DoExpresso();
...
}
}
case Command::Saft:
{
...
...
}
}
Du kannst die Kommandos mit enums durchnummerieren, um mit switch besser lesbar arbeiten zu können. Du kannst auch nur ein Enum nehmen. Ich glaube, C++11 hat jetzt eine schicke Lösung (enum-Klassen), aber da bin ich noch nicht sicher, da ich sie noch nicht genutzt habe.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.