Vektorelement löschen, Problem mit Pointer



  • Ich habe einen Vektor mit einer Datenstruktur. Das ganze sieht so aus:

    container->vector[i]->Attribut1
    container->vector[i]->Attribut2
    container->vector[i]->Attribut3

    nun möchte ich, nicht das ganze Element vector[i] löschen, sondern nur
    container->vectorelement[i]->Attribut1

    Mein Versuch:

    container->vector.erase(container->vector[i]->Attribut1)
    

    bringt folgende Fehlermeldung:
    error C2664: 'class ShapeData **__thiscall std::vector<class ShapeData *,class std::allocator<class ShapeData *> >::erase(class ShapeData ** ) ' : Konvertierung des Parameters 1 von 'char [128]' in 'class ShapeData ** ' nicht moeglich

    Das heisst doch, dass "container->vector[i]->Attribut1" dereferenziert werden muss, oder?

    container->vector.erase(container->vector*)(container->vector[i]->Attribut1)
    

    hat die gleiche FMeldung gebracht.

    Habe Referenzen und Pointer noch nicht wirklich geblickt, wie ihr seht...
    Hoffe auf Erklärung



  • Der Vektor hat mit der Struktur der in ihm gespeicherten Elemente überhaupt nichts zu tun. Du kannst aus dem Vektor ganze Elemente löschen oder es bleiben lassen.

    Wenn Du in einer Struktur ein Element (== Zeiger) löschen (== deleten) willst, kannst Du das gern tun, aber nicht mit den Zugriffsfunktionen des Vektors.



  • container->vector[i]->Attribut1[0] = 0;
    

Log in to reply