Einzelnen Beitrag anzeigen

Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#5

Re: Objekt - und Methodenzeiger in C++

  Alt 7. Dez 2004, 14:42
Wenn du eine statische Instanz einer Klasse oder einer Struktur hast, kannst du schon aus dem Grund nicht auf NULL prüfen, weil es ja eben kein Zeiger ist (ein Punkt, wo Delphi noch Nachholbedarf hat).

Und da ein Zeiger im Prinzip nur ein int ist, und NULL gleichbedeutend mit 0 ist, kannst du auch einen Funktionszeiger auf NULL testen:
Code:
int (* count)(void);
kannst du einfach mit
Code:
if(count != NULL)
oder kürzer mit
Code:
if(count)
auf Gültigkeit testen.

Ich bin mir jetzt aber nicht sicher, was du mit "Ergebnissen von Methodenzeigern" meinst. Den Rückgabewert von einer Methode kannst du doch ganz gewöhnlich prüfen.

Ein Methodenzeiger an sich ist ja aber schon sehr ungewöhnlich, da man nicht so leicht auf eine Memberfunktion einer Klasse zeigen kann.
Zuerst muss man mal den Zeigertyp definieren, z.B.:
Code:
int (Klasse::* p_methode)(void);
Jetzt muss man den Methodenzeiger auf die Funktion der Klasse zeigen lassen:
Code:
p_methode = &Klasse::methode;
Und aufrufen kann man die Methode dann mit:
Code:
Klasse eineInstanz;
int i = (eineInstanz.*p_methode)(void);
Den Methodenzeiger kann man ebenfalls wieder mit NULL auf Gültigkeit prüfen.

Ich bezweifle aber, dass das das war, was du wissen wolltest, da ein Methodenzeiger wohl zu den Dingen gehört, die man nie braucht...


Eine dynamische Instanz eines Objekts kannst du natürlich wie gewöhnlich prüfen:
Code:
Klasse *instanz;
instanz = new Klasse;
if(instanz == NULL)
{
  // Fehler!
}
  Mit Zitat antworten Zitat