Polymorphie und CArray?
-
Hallo, ich bin gerade auf ein Problem gestoßen wo ich nicht so recht weiter weiss.
Ich habe ein CArray<CBase,CBase>. CBase enthält virtuelle Funktionen, werden diese jedoch in einer Kindklassenimplementierung überschrieben, wird bei einem Aufruf über das Array nur die Basisversion aufgerufen. Die Elemente werden mit CArray::Add(CChild()) hinzugefügt.Gruß,
connan.
-
Das kann ja auch nicht gehen. Dein Array ist ein CBase Array. Wenn Du Elemente zuweist wird aus dem CChild ein CBase. Hier findet ein truncate der Klasse statt.
Wenn Du solch ein Verhalten möchtest benötigst Du einen Array von Zeigern.
-
Schade, eben das hatte ich gehofft verhindern zu können

Danke.
-
Dann nimm ein Array von Smart-Pointern...
-
Genau! Da war ja noch was ;). Da muss ich doch gleich mal meine TL durchstöbern. Danke.
-
Schau Dir die Boost TR1 Implementierung an.