Thread defined(variable) (10 answers)
Opened by pktm at 2008-04-06 01:24

murphy
 2008-04-07 16:49
#108001 #108001
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
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.

View full thread defined(variable)