pktm+2008-04-07 12:56:49--[...]
Warum können die nicht so ein defined() wie in Perl haben?
Weil C und C++ Systemprogrammiersprachen sind wenn man hier z.B. einen
int deklariert, will man auch einen
int haben und nicht eine Struktur mit irgendwelchen zusätzlichen Feldern, die den Zustand der Variablen tracken ;-)
Wenn Du eine Funktion zur Überprüfung von Instanzen einer Klasse schreiben sollst, empfiehlt sich eine der folgenden Strategien:
(1) Schreibe einen eigenen
new-Operator für die Klasse, der sicherstellt, dass Speicher der für die Instanzen der Klasse alloziert wird, immer komplett auf
0 initialisiert wird. Führe dann eine Instanzvariable
bool is_initialized ein, die vom Konstruktor oder einer anderen Initialisierungsroutine gesetzt wird.
(2) Schreibe eine Funktion, die sämtliche Instanzvariablen der Klasse auf Konsistenz prüft, ohne a priori irgendwelche Annahmen über ihren Inhalt zu machen.
Variante (2) ist besser, denn bei Variante (1) kann man nicht Sicherstellen, dass nicht jemand (z.B. mutwillig) eine Instanz der Klasse so alloziert, dass
is_initialized von Anfang an auf
true steht, ohne dass die Klasse initialisiert wäre...
When C++ is your hammer, every problem looks like your thumb.