Ich erhalte Basisklasse Zeiger Vektor, der abgeleiteten Klasse Zeiger Vektor übergeben werden benötigt, schlagen Sie bitte besten Weg, das gleiche zu tun.Gießen derivedclassptrVector von baseclassptrVec, den besten Weg?
Ein Weg wird
eine neue abgeleitete Klasse Vektors mit der Vektorgröße ptr
Schleife der ankommende Vektor
dynamische Umwandlung der Basiszeiger und füllen den abgeleiteten Vektor Basisklasse erstellen.
Bitte schlagen Sie vor, wenn es eine bessere Möglichkeit gibt zu überzeugen, dass der Vektor für die polymorphen Typen ist.
Sind Sie sicher, dass alle Objekte in der Basisklasse Zeiger sind Klassenobjekte tatsächlich abgeleitet? Andernfalls wird das Casting fehlschlagen. Denken Sie nur darüber nach, was passiert, wenn jemand eine neue abgeleitete Klasse schreibt und einen Zeiger darüber gibt. Ich denke, du solltest dein Design neu interpretieren. – Naveen
Ich lese das zuerst rückwärts. Wie Naveen sagt, ist das, was Sie tun, wahrscheinlich nicht ratsam und bezeichnend, dass es ein besseres Design mit virtuellen Methoden geben könnte. Der andere Weg ... einen Vektor abgeleiteter Klassenzeiger auf einen Vektor von Basisklassenzeigern zu werfen ... ist vernünftig zu wollen, aber in C++ nicht legal, da Vorlagen "Kovarianz" nicht unterstützen: http://stackoverflow.com/ Fragen/3922335/Verweis auf einen stdvector-von-abgeleiteten Klassen-Pointer-as-input-Parameter-to-a-func – HostileFork