Zeiger abfragen
-
Also ich habe ein Array mit Zeigern und dort drin sind einmal Zeiger, die auf eine Klasse Person zeigen und auf eine Klasse Autos.
Nun will ich die Atrribute der Objekte ausgeben.
Dadurch will ich ja das Array durchlaufen und muß abfragen, ob es sich z.B. bei dem Array[0] um einen Zeiger auf eine Person oder auf ein Auto handelt.Wie mache ich das???
if????
-
Mir ist ein Rätsel wie du es überhaupt geschafft, es Personen und Autozeiger in ein Array zu packen, die werden doch nicht etwa eine gemeinsame Basisklasse haben?!
-
ja das haben sie in diesem fall
Es geht darum einen Stack zu füllen mit was auch immer!Aber die Basisklasse hat keine Attribute und nur ein virtuelle Funktion (diese wird nicht benutzt)!
-
reale_Klasse_X * ptr = dynamic_cast<reale_Klasse_X *>(*it); // wenn it der iterator, also *it der zeiger auf deine Basisklasse if(ptr) { // Cast hat funktioniert, ptr ist vom Typ reale_Klasse_X oder einer davon abgeleiteten klasse ptr->function_von_X(); // geht nun, ohne probleme ... } // ...
Ciao ...
-
ja das ist schon klar was ich aber machen will ist den Inhalt des Arrays ausgeben bzw. die Attribute der Objekte auf die die Arrayelemente zeigen.
Und LKW und Person habe unterschiedlich getter!Deshalb will ich erstma immer fragen ob es sich bei diesem Arrayelement um einen Zeiger auf Person oder LKW handelt und dann kann ich auf alle getter durch eben die cast Funtkion zugreifen.
-
marcus' buch schon gelesen?
der sagt da drin glaub ich, daß man da ne virtuelle funktion schreiben soll, die die ausgabe macht. dann kann man in der schleife einfach für alle zeiger die funktion aufrufen. weils eine virtuelle ist, wird sie schon die Auto::anzeige bzw Person::Anzeige aufrufen, je nachdem, welches objekt wirklich hinter dem zeiger lauert.