![]() |
Pointer auf Objekte beliebiger Klassen (C++)
Hallo,
ich frage mich gerade ob ich einen Zeiger erstellen kann, der auf verschiedene Klassen zeigen kann. Ich habe z.B. die Klassen
Und jetzt habe ich z.B. eine Klasse cPerson mit einer Zeiger-Variable "Haustier", welche auf ein beliebiges Tier zeigen soll. Wie geht das? Also ungefähr so: cTier *lieblingstier = new cGoldfisch("Goldi"); Geht aber leider nicht. |
Re: Pointer auf Objekte beliebiger Klassen (C++)
Versuch mal zu casten
|
Re: Pointer auf Objekte beliebiger Klassen (C++)
Dann muss ich aber wissen welche Klasse es ist und das weiß ich nicht.
Kann man das irgendwie herausfinden? |
Re: Pointer auf Objekte beliebiger Klassen (C++)
ich glaub der fehler ist das leerzeichen und der stern ;)
Zitat:
probier' mal
Code:
^^der stern muss hinter den klassenname und nicht vor den objektname!
cTier* lieblingstier = new cGoldfisch("Goldi");
|
Re: Pointer auf Objekte beliebiger Klassen (C++)
Funktioniert leider auch nicht.
BTW: Ich schreibe den Stern oft am Klassenname, oft an der Variable und oft dazwischen. Funktioniert eigentlich immer wie erwartet. ;) Macht wohl keinen Unterschied... |
Re: Pointer auf Objekte beliebiger Klassen (C++)
Zitat:
Code:
cTier *lieblingstier = (cTier)new cGoldfisch("Goldi");
|
Re: Pointer auf Objekte beliebiger Klassen (C++)
Ja hier geht es, aber das soll mal alles dynamisch zugewiesen werden. Da weiß ich dann nicht mehr wie.
Beispiel
Code:
void setLieblingstier( ???? tier )
{ lieblingstier = (cTier)tier; } ??? getLieblingstier() { return (???)lieblingstier; } |
Re: Pointer auf Objekte beliebiger Klassen (C++)
Code:
void setLieblingstier( ctier *tier )
{ lieblingstier = tier; } ctier getLieblingstier() { return lieblingstier; } |
Re: Pointer auf Objekte beliebiger Klassen (C++)
Kann ich denn auch ein cGoldfisch übergeben, wenn die Funktion ein cTier erwartet?
Ich dachte das getestet zu haben. Da ging es nicht... Edit: Ja, mit cast ;) 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... |
Re: Pointer auf Objekte beliebiger Klassen (C++)
Zitat:
Zitat:
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:
Zitat:
Zitat:
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<>. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:13 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