Klassenzeiger in Kontainern



  • Sers.

    ich krieg immer nen Programmabsturz.
    Die Sache ist die:
    Ich hab Vektoren

    std::vector<MyClass*>;
    

    Wenn ich dann aber in ein Element des Vektors schreiben will, stürzt das Programm ab.
    Vermutlich ist der Zeiger ungültig. Wie muss ich das dann anstellen?



  • mit new initialisieren und mit delete später wieder löschen.

    std::vector<MyClass*> v;
    
    MyClass* c = new MyClass(...);
    v.push_back(c); //hier könnte man auch direkt new MyClass reinpushen...
    
    ... //damit arbeiten
    
    for(std::vector<MyClass*>::iterator i = v.begin(); i != v.end(); i++)
    // für jedes element im container
    // -> löschen
    
    // mit *i greifst du auf den inhalt des iterators zu
    // in dem fall ein MyClass* zeiger
    {
    delete *i;
    }
    

    ungetestet.


Anmelden zum Antworten