Vector der Zeiger auf Klassen enthält erstellen
-
Warum funktioniert das nicht wie folgt:
#include <vector> #include <iostream> using namespace std; class A { }; int main() { vector<*A> PointerVector; // 6 Fehler for(int i=0; i<17; ++i) { A *test = new A(); PointerVector.push_back(test); } return(0); }
Ich will dann später so damit arbeiten:
PointerVector[i]->Methode();
-
Der Stern kommt nach dem Datentyp:
vector<A*> vec;
-
Au man das ich so einen dummen Fehler noch mache
-
Kleiner Nachtrag:
Per
for(i=0; i<17; ++i) delete PointerVector[i];
Lösche ich doch definitiv die Objekte der Klasse A?
-
Ja, aber das ist irgendwie unschön. Benutz doch boost::shared_ptr, dann kannste
vector<shared_ptr<A> > schreiben und mußt Dich nicht selber um's Löschen kümmern.
MfG Jester
-
wäre das viel arbeit sich in diesen Teilbereich von boost reinzufuchsen? Ansonsten stell ich das dann erstmal hinten an(häng im Zeitplan zurück
)
-
shared_ptr arbeitet sehr intuitiv. Wie ein normaler pointer eben, nur daß Du das delete nicht vergessen kannst.
-
Naja, man muss halt darauf achten, nicht zwei shared_ptrs aus einem rohen Zeiger zu erstellen...