Problem mit dynamischer Bindung
-
ich habe eine klasse
class AA {
private:
std::list<class A> m_A;};
die obj von einer klasse (die eine weitere klasse beerbt) in eine liste aufnimmt !so will ich alle objekte und unterobjekte ausgeben nur leider wird immer nur die Basisklasse gebunden und nicht die vererbten!
I
Vfor (i= m_A.begin(); i != m_A.end(); ++i){ i->PrintObj(); cout<<endl; } in klasse A virtual void PrintObj(); void A::PrintObj() { cout<<"A"<<endl; }; in klasse B die A erbt; virtual void PrintObj(); void B::PrintObj() { cout<<"B"<<endl; }; -->leider wird immer nur A ausgegeben obwohl ich A u B objekte in der Liste speichere? ich verwende eine liste aus #include <list> hat das viell. damit was zu tun?
-
Die Liste beinhaltet nur A-Objekte da B-Objekte zuvor in A upgecasted werden und auch B sind.
MfG SideWinder
-
mmm? aber mit dem virtual müssten sie doch wieder angezeigt werden? wie mach ich das dass die b objekte auch ausgegeben werden?
thx
-
//eidt verlesen
-
Hallo,
Polymorphie funktioniert nur mit Zeigern und Referenzen.
//Edit Polimorphie in Polymorphie geändert ..die deutsche Sprache ist mir suspekt.
//Edit 2 und die griechische Sprache erst recht :p
-
prolog schrieb:
Polimorphie
Autsch.
MfG SideWinder
-
Hö ?
Meintest du jetzt die Rechtschreibung oder den Inhalt ?
-
Algorythmus ist imho falsch
Polymorphie ist imho richtigMfG SideWinder
-
*gg* Japp, habs editiert. Sry.
-
Das hat mit deutscher Sprache gar nichts zu tun, da poly AFAIK aus dem Griechischen kommt. :p
-
das heißt ich muss eine liste machen die zeiger auf objekte der klasse A aufnimmt? -> sowas list<class A* obj> listeA???
-
Wenn du das "obj" ausm Template noch rausnimmst, ja.
MfG SideWinder