nach jahrelanger Abwesenheit, was Programmierung anbelangt, versuche ich zur Zeit wieder etwas ins Programmieren zu kommen, alte Kenntnisse aufzufrischen und neue Kentnisse zu erlangen. Und prompt stellt man sich die eine oder andere Frage.
Und zwar geht es darum, in einem Vektor Zeiger zu speichern, um sowohl Basis- als auch abgeleitete Klassen sammeln zu können. Nun stellt sich die Frage, ob ich folgendes machen kann (compilieren tut es, so weit ich das ausprobieren konnte, tut es auch es "soll"):
Code: Alles auswählen
#include <iostream>
#include <vector>
using namespace std;
class Base
{
public:
virtual void f() { cout << "Base \n"; }
};
class Derived : public Base
{
public:
virtual void f() { cout << "Derived \n"; }
};
int main()
{
vector<Base*> BVector;
int a;
do
{
cin >> a;
Derived Abgeleitet;
BVector.push_back(&Abgeleitet);
cout << BVector.size() << endl;
cout << &BVector[BVector.size() - 1] << endl;
} while (a != 0);
return 0;
}
Code: Alles auswählen
BVector.push_back(new Derived());
Wenn ich danach allerdings via
Code: Alles auswählen
BVector[0]->f();
Kurz gesagt: Brauche ich new um dynamisch Objekte zu einem Vektor von Zeigern hinzuzufügen oder nicht?
Über Hilfe würde ich mich sehr freuen!
Beste Grüße
Felix