![]() |
Objekt - und Methodenzeiger in C++
Hallo Freunde des C++,
Was ich an Delphi so sehr schätze, seitdem ich auch C++ programmiere ist, dass alles syntaktisch sehr schön übersichtlich und einfach oder zumindest nachlesbar ist. Das Schlüsselwort NIL hilft sehr bei Zeigerarithmetik. Leider scheint man in C++ von dieser Einfachheit nicht viel zu halten. Es gibt hier ein definiertes Makro NULL, aber das kann nur auf einfache Zeiger, nicht aber für Methodenzeiger oder Objektzeiger verwendet werden. Ich würde gern wissen, wie man in C++ ... - Ein Objekt auf null/nil prüfen kann :gruebel: - Ein Objekt den Zustand null/nil zuweisen kann :gruebel: - Zeiger-Methodenergebnisse (z.B. int *count()) auf null/nil prüfen kann. :gruebel: Kann mir da jemand helfen? :gruebel: Greetz’n cheatz DANNYBOY |
Re: Objekt - und Methodenzeiger in C++
Moin!
Code:
MfG
TKlasse *myInstance = NULL;
myInstance = new TKlasse(); if ( myInstance ) // ist das gleiche wie != NULL bzw. If Assigned() { // angelegt } else // nicht angelegt delete myInstance; myInstance = NULL; // warum sollte dies nicht gehen? Muetze1 |
Re: Objekt - und Methodenzeiger in C++
er wird wohl mit statisch allozierten Objecten gearbeitet haben ?! ;)
Gruß Hagen |
Re: Objekt - und Methodenzeiger in C++
Hallo Jungs,
ich habe statische Objekte, genau. Muss ich etwa dynamische Instanzen verwenden um das dann so zu machen, wie Muetze :gruebel: Fein, danke, dann mach' ich das eben so. Danke schon mal dafür. Ich bin nun einen entscheidenden Schritt weiter. :thumb: Wie sieht's nun aus mit den Methodenzeigern? Wie prüfe ich da die Ergebnissse auf Null? :gruebel: |
Re: Objekt - und Methodenzeiger in C++
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:
kannst du einfach mit
int (* count)(void);
Code:
oder kürzer mit
if(count != NULL)
Code:
auf Gültigkeit testen.
if(count)
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:
Jetzt muss man den Methodenzeiger auf die Funktion der Klasse zeigen lassen:
int (Klasse::* p_methode)(void);
Code:
Und aufrufen kann man die Methode dann mit:
p_methode = &Klasse::methode;
Code:
Den Methodenzeiger kann man ebenfalls wieder mit NULL auf Gültigkeit prüfen.
Klasse eineInstanz;
int i = (eineInstanz.*p_methode)(void); 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! } |
Re: Objekt - und Methodenzeiger in C++
Moin!
Zum aller letzten Beispiel von Oxmyx: nicht lieber so herum?
Code:
MfG
Klasse *instanz;
instanz = new Klasse; if(instanz == NULL) { // Fehler! } Muetze1 |
Re: Objekt - und Methodenzeiger in C++
Ups, natürlich, du hast Recht. Ich hab grad mit Delphi programmiert, da hatte ich die Reihenfolge grad noch anders drin. ;)
|
Re: Objekt - und Methodenzeiger in C++
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz