Pointer zu Pointern in Klassen



  • da der originalcode zu groß ist, post ich hier nur ne vereinfachte version, aber es ist das gleiche Problem:

    struct node
    {
    int data;
    node *next;
    };

    class MYCLASS
    {
    public:

    MYCLASS();
    ~MYCLASS();

    struct *liste;
    };

    //also eine ganz simple Liste

    die ich über MYCLASS ansprechen will.

    int main()
    {
    MYCLASS *myclass;

    myclass =new MYCLASS;

    //und jetz kommt der wichtige part:

    /**vereinfachter "Dateninput" *lol* ich denke is klar, was ich meine*/

    myclass->liste=new node;
    liste->next=new node;
    liste->next->next=NULL;

    return EXIT_SUCCESS;
    }

    auf jeden Fall kann ich den code ohne Probleme compilieren, und dann krieg ich aber während der Laufzeit eine Segmentation fault, und war genau an der Stelle, wo das programm versucht die LIste zu initialisieren, mit anderen Worten nichmal der pointer für liste wurde initialisiert, für mich siet das so aus, als ob der default constructor von MYCLASS nich aufgerufen wrde, aber ich hoffe mir können andere Leute noch mehr dazu sagen... danke schonma



  • Deine "vereinfachte Version" ist erstens nicht kompilierbar, und zweitens ist - wenn man denn die Fehler sinnvoll berichtigt - überhaupt kein Problem da.

    Der Fehler liegt also sehr wahrscheinlich in dem Code, den du beim "Vereinfachen" entfernt hast.



  • also außer den syntaktischen fehlern, sollte alles gut funktionieren.
    ich nehme mal an dass der fehler bei dir im destruktor liegt. deshalb der
    segmentation fault. oder du löschst vielleicht das MYCLASS-Objekt BEVOR
    du die ganzen next-Objecte (node) gelöschst hast. keine ahnung, fragen über vermutungen 😉
    kleiner tipp am rande:
    niemals public-attribute verwenden. sonst wird es pseudo-c++
    aber vielleicht hasse das ja auch nur zur vereinfachung gemacht.
    poste mal das original



  • Dass dieser Code funktionieren soll wundert mich jetzt etwas.

    Er schreibt in MyClass:

    struct* liste;

    Also ein Pointer auf struct?! Geht das? Weil struct an sich ja kein Typ ist.
    Zugewiesen wird das dann so:

    MyClass->liste=new Node;

    Wir weisen also einem struct* ein Node* zu. Mich verwirrt das. Sowas habe ich noch nie gesehen.

    Meiner Meinung nach ist dies weder erlaubt noch korrekt.



  • Fluxx schrieb:

    Also ein Pointer auf struct?! Geht das? Weil struct an sich ja kein Typ ist.

    Nein, geht nicht. Im echten Code steht wahrscheinlich node* liste;



  • MFK schrieb:

    Fluxx schrieb:

    Also ein Pointer auf struct?! Geht das? Weil struct an sich ja kein Typ ist.

    Nein, geht nicht. Im echten Code steht wahrscheinlich node* liste;

    Ja, genau das meinte ich. 😉 Ist damit ja geklärt.


Anmelden zum Antworten