Also ich versuche so oft wie möglich ohne bool auszukommen.
Das geht z.B. wenn man mehre bools in einer Klasse hat wie diese:
bool Methode:
|
Quellcode
|
1
2
3
4
5
6
|
class CFoo
{
bool bVisible;
bool bActive;
//...
};
|
Eine schönere Methode ist dann beispielsweiße diese hier:
unsigned long (bzw. DWORD) Methode
|
Quellcode
|
1
2
3
4
|
class CFoo
{
DWORD dwStates;
};
|
Denn so hab ich eine 32Bit Varbiable womit die heutigen Prozessoren am schnellsten rechnen können und kann dadrin per "Bit Flag" die Statusse speichern. In einem bool kann man nur einen dieser Statusse speichern obwohl vom Speicher her platzt für 16 Stück wäre, indem DWORD sogar für 32 Stück. Das könnte man sich im Code ungefähr so vorstellen:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
enum FOO_STATE
{
FOO_STATE_VISIBLE = 1,
FOO_STATE_ACTIVE = 2,
FOO_STATE_RESERVED1 = 4,
FOO_STATE_RESERVED2 = 8
// usw. ...
};
void Foo(void)
{
DWORD dwFooStates = FOO_STATE_VISIBLE | FOO_STATE_RESERVED2;
if(dwFooStates & FOO_STATE_VISIBLE)
// Dieser Bitflag ist gesetzt also würde der Code nach dem if ausgeführt werden
if(dwFooStates & FOO_STATE_ACTIVE)
// Nicht gesetzt...
if(dwFooStates & FOO_STATE_RESERVED1)
// Nichtgesezt...
if(dwFooStates & FOO_STATE_RESERVED2)
// Gesetzt...
}
|
Ich habe diese Methode beispielsweiße in meiner Font-Engine eingesetzt um abzufragen ob verschiedene Effekte wie Fade-In, Fade-Out oder blinkender Text eingeschaltet sind.
Außerdem wird diese Methode wohl Verwendung in meiner GUI finden.
Ciao DarthB