
So, jetzt hab ich doch mal wieder was^^
Ich hab eine std::map, die als Key einen string nimmt und (im Moment, ich glaube da liegt der Fehler) als Wert ein void*
Sinn ist: In diese Map möchte ich (zusammen mit einer Beschreibung) Zeiger auf alle möglichen Objekte (Klassen hauptsächlich) legen. (Sozusagen eine Registry^^)
Nun folgendes:
Code: Alles auswählen
ModReg::~ModReg()
{
while (!mods.empty())
{
map<string,void *>::iterator it = mods.begin();
delete (it->second);
mods.erase(it);
}
}
Ich denke aber (anhand von Debugausgaben in den in der Map gespeicherten Klassen), dass die Destruktoren der gespeicherten Klassen (in der Map) nicht aufgerufen werden.
Das ist natürlich nicht so toll.
Ich hab auch schon eine Vermutung, woran es hapert:
Ich benutze void*, der Compiler gibt mir schon nette Meldungen aus von wegen "Warnung: Löschen von »void*« ist nicht definiert"
Sollte ich es lieber mit einem enum versuchen?
Oder kann ich den Destruktor iwie anders aufrufen? Direkt?