vector iterator memleak?
-
Dem boost::ptr_vector kann man keine Methode für den Destruktor des Objekts übergeben, wie man das beim boost::shared_ptr machen kann, oder? Wenn das nicht möglich ist, bleibt mir dann wohl keine andere Wahl und ich muss zu Möglichkeit 1 greifen und den std::vector + boost::shared_ptr verwenden.
-
DarkBug schrieb:
Dem boost::ptr_vector kann man keine Methode für den Destruktor des Objekts übergeben, wie man das beim boost::shared_ptr machen kann, oder?
Das kannst du beim shared_ptr auch nicht. Du kannst eine Funktion übergeben, die das Ziel zerstört und den Speicher freigibt. Kleiner Unterschied zum Destruktor. Standardmäßig ist das analog zu std::default_delete.
-
pumuckl schrieb:
Du kannst eine Funktion übergeben, die das Ziel zerstört und den Speicher freigibt.
Genau das möchte ich tun. Destroy() ist die Methode des Objekts, die dies macht.
vector<shared_ptr<Element> > vec; vec.push_back(shared_ptr<Element>(GetElementPointer()), *GetElementPointer()->Destroy());Wäre das so machbar bzw. wäre dies auch mit einem boost::ptr_vector möglich?
EDIT: Fehler im Code berichtigt.
-
Ich habe Möglichkeit 1 nun mal ausprobiert. Ich muss an jeder Stelle erst casten, das finde ich sehr unschön.
ve.push_back((shared_ptr<Element>)GetElementPointer());
-
*push*