Probleme mit delete in Destruktor (... argument given to 'delete', expected pointer)



  • Hallo,

    ich habe mir eine Klasse folgendermaßen erstellt:

    // List.hpp
    class List{
    public:
    	List();
    	~List();
    ...
    };
    
    // List.cpp
    #include <vector>
    #include "List.hpp"
    
    List::List(){
        std::vector<Contact>* FItems = new std::vector<Contact>;
    }
    List::~List(){
        delete FItems;
    }
    

    Nun erhalte ich folgende Fehlermeldung:
    ../src/List.cpp:9:9: error: type 'class std::vector<Contact>' argument given to 'delete', expected pointer

    Aber ich habe doch FItems als Pointer deklariert im Konstruktor. Wenn ich "delete FItems;" direkt in den Konstruktor packe

    List::List(){
        std::vector<Contact>* FItems = new std::vector<Contact>;
        delete FItems;
    }
    

    bekomme ich die Fehlermeldung nicht.

    Kann mir jemand hier weiter helfen?



  • Wo ist das Attribut definiert?
    Du hast im Ctor nur mit einer lokalen Variablen gespielt, die evtl das Attribut verdeckte.



  • Weshalb legst du den vector überhaupt per new an? Gibt es dafür irgendeinen sinnvollen Grund?

    Des weiteren wie von volkard schon gesagt, legst du im Konstruktor eine lokale Variable an. Willst du vielleicht eher das:

    List::List(){
        FItems = new std::vector<Contact>;
    }
    

    Und "FItems" hört sich ganz stark nach einen Delphi-Geschädigten an xD



  • Das mit Delphi stimmt. Was ich gerade machen will ist eine App, die in Delphi für Android programmiert wurde nun für den BlackBerry umzusetzen.
    Das Gerüst steht schon, alles programmiert in qml.
    Ich muss nur noch die Klassen definieren, die die App dann mit Inhalt füllen. Die Oberfläche wurde also mit QML programmiert und der Inhalt soll dann mit Hilfe von C++ dazukommen.

    Dazu will ich eine Klasse Contact haben in der die verschiedenen Attribute jedes Kontakts gespeichert werden können (Name, Mail, etc.) und die will ich dann in der Klasse List in eine Liste der Kontakte füllen.
    Und die soll dann an die App übergeben werden, so dass sie dort dargestellt werden kann.

    Das ganze ist vll etwas komplexer und sprengt den Rahmen dieses Forums.



  • Rhobar2 schrieb:

    Das ganze ist vll etwas komplexer und sprengt den Rahmen dieses Forums.

    Erklärt dennoch nicht was das mit new und delete beim vector soll.


Anmelden zum Antworten