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*


Anmelden zum Antworten