So löschen Sie ein Objekt in einem Satz

In meinem C++ - Programm, erstelle ich Objekte in einer Funktion mit neuen. Diese Objekte sind eingefügt in eine Reihe. Wenn ich möchte, dass das entfernen von Objekten aus dem set, ich verwende einen iterator in einer for-Schleife. Wenn ich das Objekt entfernen aus dem set, die ich noch brauchen, um das Objekt zu löschen, um freien Speicher, richtig? Ich habe versucht mit löschen, aber dann bekomme ich eine Fehlermeldung, dass die Zeiger freigegeben wird nicht reserviert wurde. Also, wie kann dies gemacht werden?

Hier ist der code wo ich das Objekt erstellen und dann legen Sie es in den Satz

set <myObject> myobjectlist;
myObject *myobject = new myObject;
myobjectlist.insert(*myobject);

In einer anderen Funktion, ich versuche so entfernen Sie ein Objekt aus der Menge, und seine Speicher frei:

    for (set<myObject>::iterator i = myobjectlist.begin(); i != myobjectlist.end(); i++)
if (i->myObjectID == myObjectID)
{
    myobjectlist.erase(*i);
    delete &i;
    break;
}

Dieser funktioniert ohne die "löschen" - Teil. Ich habe es, weil ich dachte, dass der Speicher aus dem Objekt nicht freigegeben wird.

InformationsquelleAutor node ninja | 2011-04-30
Schreibe einen Kommentar