AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Objekt - und Methodenzeiger in C++

Ein Thema von Dannyboy · begonnen am 7. Dez 2004 · letzter Beitrag vom 7. Dez 2004
Antwort Antwort
Dannyboy

Registriert seit: 4. Aug 2003
Ort: Delphi-Heaven
418 Beiträge
 
Delphi 7 Personal
 
#1

Objekt - und Methodenzeiger in C++

  Alt 7. Dez 2004, 10:22
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
- Ein Objekt den Zustand null/nil zuweisen kann
- Zeiger-Methodenergebnisse (z.B. int *count()) auf null/nil prüfen kann.

Kann mir da jemand helfen?

Greetz’n cheatz

DANNYBOY
How much wood would a wood-chuck chuck if a wood-chuck would chuck wood?
Check this out.
DANNYBOY
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Objekt - und Methodenzeiger in C++

  Alt 7. Dez 2004, 11:28
Moin!

Code:
  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?
MfG
Muetze1
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#3

Re: Objekt - und Methodenzeiger in C++

  Alt 7. Dez 2004, 13:23
er wird wohl mit statisch allozierten Objecten gearbeitet haben ?!

Gruß Hagen
  Mit Zitat antworten Zitat
Dannyboy

Registriert seit: 4. Aug 2003
Ort: Delphi-Heaven
418 Beiträge
 
Delphi 7 Personal
 
#4

Re: Objekt - und Methodenzeiger in C++

  Alt 7. Dez 2004, 15:06
Hallo Jungs,
ich habe statische Objekte, genau. Muss ich etwa dynamische Instanzen verwenden um das dann so zu machen, wie Muetze

Fein, danke, dann mach' ich das eben so. Danke schon mal dafür. Ich bin nun einen entscheidenden Schritt weiter.
Wie sieht's nun aus mit den Methodenzeigern? Wie prüfe ich da die Ergebnissse auf Null?
How much wood would a wood-chuck chuck if a wood-chuck would chuck wood?
Check this out.
DANNYBOY
  Mit Zitat antworten Zitat
Oxmyx

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

Re: Objekt - und Methodenzeiger in C++

  Alt 7. Dez 2004, 15: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
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: Objekt - und Methodenzeiger in C++

  Alt 7. Dez 2004, 17:05
Moin!

Zum aller letzten Beispiel von Oxmyx:

nicht lieber so herum?
Code:
Klasse *instanz;
instanz = new Klasse;
if(instanz == NULL)
{
  // Fehler!
}
MfG
Muetze1
  Mit Zitat antworten Zitat
Oxmyx

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

Re: Objekt - und Methodenzeiger in C++

  Alt 7. Dez 2004, 17:33
Ups, natürlich, du hast Recht. Ich hab grad mit Delphi programmiert, da hatte ich die Reihenfolge grad noch anders drin.
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Objekt - und Methodenzeiger in C++

  Alt 7. Dez 2004, 18:45
Zitat von Oxmyx:
(ein Punkt, wo Delphi noch Nachholbedarf hat).
Naja, du kannst aucb TurboPascal-Objekte nehmen, da hast du auch statische Stackobjekte.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz