Aufzählungen werden oft genutzt und zwischen verschiedenem Verhalten zu wählen.
Das sieht dann so aus:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
void machWas()
{
if(meineArt == FISCH)
{
schwimmen();
}
else if(meineArt == VOGEL)
{
fliegen();
}
else if(meineArt == SAEUGETIER)
{
laufen();
}
}
|
Oder halt mit switch-case. Das ist auf dauer nicht besonders flexibel und fehleranfällig. Für einen Anfänger aber völlig in Ordnung. Jeder fängt mal klein an.
Eine schönere Lösung wäre man mit Vererbung und virtuellen Methoden zu erreichen.
Das sieht dann in etwa so aus:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
#include <iostream>
class Tier
{
virtual void bewegen() = 0;
public:
void machWas()
{
/*...*/
bewegen();
/*...*/
}
};
class Fisch : public Tier
{
void schwimmen()
{
std::cout << "Ich schwimme" << std::endl;
}
virtual void bewegen()
{
schwimmen();
}
};
class Vogel : public Tier
{
void fliegen()
{
std::cout << "Ich fliege" << std::endl;
}
virtual void bewegen()
{
fliegen();
}
};
class Saeugetier : public Tier
{
void laufen()
{
std::cout << "Ich laufe" << std::endl;
}
virtual void bewegen()
{
laufen();
}
};
void tolleFunktion(Tier &tier)
{
tier.machWas();
}
int main()
{
Saeugetier laeufer;
Vogel flieger;
Fisch schwimmer;
tolleFunktion(laeufer);
tolleFunktion(flieger);
tolleFunktion(schwimmer);
std::cin.get();
return 0;
}
|
Das sieht auf dem ersten Blick viel komplizierter und aufwändiger aus. Hast du aber komplexere Funktionen als "tolleFunktion" sparst du dir eine Menge Arbeit. Damit ist auch noch viel mehr möglich.
Dazu empfehle ich dir ein gutes Handbuch, Effective C++ und Designpatterns zu lesen.
Edit: Übrigens weiß ich, dass es Vögel gibt die nur Laufen und Säugetiere die auch Fliegen können gibt.