Ich brauche einen Pointer-Container, der die Besitzer der Zeiger übernimmt - d. H. Wenn ein Element entfernt wird oder der Container den Gültigkeitsbereich verlässt, gibt es alle seine Zeiger frei, wie in boost::ptr_vector
.Qt entspricht boost :: ptr_vector?
QList<QScopedPointer<AbstractClass> >
funktioniert nicht (Fehler kompilieren, kein Kopierkonstruktor?).
Momentan verwende ich QList<QSharedPointer<AbstractClass> >
, aber es fühlt sich an wie ein Overkill, mit seiner Referenzzählung und dem teuren Mutex für Multithreading.
Edit: Ich habe gelernt, über QPtrList (dank @ForEveR), das war, dass sehr gleichwertig in Qt3, wurde aber von späteren Versionen entfernt. Ich verstehe einfach nicht, warum sie es entfernen würden.
Wow, interessante Frage, aber yeah, QScopedPointer ist nicht dazu gedacht, kopiert zu werden, da das einzelne Eigentum hält. – lpapp
Sind Sie mit einer C++ 11-Lösung zufrieden oder müssen Sie vorher auch den Standard unterstützen? unique_ptr kann zumindest in einen std :: vector eingefügt werden. QVector ist schwieriger. – lpapp
@lpapp Ich bin auf VS2010 für dieses Projekt, so kann ich C++ 11 nicht persönlich verwenden. – sashoalm