Einzelnen Beitrag anzeigen

DMW

Registriert seit: 6. Sep 2006
Ort: Münster
269 Beiträge
 
Delphi XE Professional
 
#10

Re: Pointer auf Objekte beliebiger Klassen (C++)

  Alt 15. Sep 2008, 17:03
Zitat von Torpedo:
Wie geht das?

Also ungefähr so:

cTier *lieblingstier = new cGoldfisch("Goldi");
Genau so.


Zitat von Torpedo:
Geht aber leider nicht.
Warum nicht?
Kann es sein, daß du übersehen hast, daß Basisklassen standardmäßig private sind und explizit als public deklariert werden müssen?

Code:
class cTier { ... };
class cGoldfisch : public cTier { ... };

Zitat von xy124:
ich glaub der fehler ist das leerzeichen und der stern Wink
Zitat:
cTier *lieblingstier = new cGoldfisch("Goldi");
ist falsch.
probier' mal
Code: markieren
cTier* lieblingstier = new cGoldfisch("Goldi");

^^der stern muss hinter den klassenname und nicht vor den objektname!
Unfug. Ob zwischen Operatoren und Bezeichnern Leerzeichen sind, ist vollkommen irrelevant, wie in Delphi übrigens auch.


Zitat von jfheins:
cTier *lieblingstier = (cTier)new cGoldfisch("Goldi");
Was genau hast du da vor? cGoldfisch -> cTier -> cTier*?


Zitat von Torpedo:
Aber irgendwann muss sich wissen was es für eine Klasse ist, sonst kann ich die Funktionen, die nur zu der Klasse gehören nicht benutzen...
Dafür gibt es dynamic_cast<>.

Der Cast nach der Art (Typ)Ausdruck nennt sich "C-Cast" und ist in C++ zu Recht verpönt. Man nehme static_cast<> oder dynamic_cast<>.
Moritz
  Mit Zitat antworten Zitat