Zugriff auf QList Member objekt



  • Hallo,
    ich habe folgende klasse:

    #ifndef STRECKENKNOTEN_H
    #define STRECKENKNOTEN_H
    
    #include <QObject>
    #include <QList>
    #include "streckenabschnitt.h"
    
    class streckenknoten : public QObject
    {
        Q_OBJECT
        public:
            streckenknoten();
            virtual ~streckenknoten();
            void verbinde(streckenknoten* ziel);
        private:
            QList<streckenabschnitt* > verbindungen;
    };
    
    #endif // STRECKENKNOTEN_H
    
    #include "streckenknoten.h"
    
    streckenknoten::streckenknoten()
    {
        //ctor
    }
    
    streckenknoten::~streckenknoten()
    {
        //dtor
    }
    
    void streckenknoten::verbinde(streckenknoten* ziel)
    {
        streckenabschnitt *tmp = new streckenabschnitt();
        tmp->setTarget(ziel);
        verbindungen.append(tmp);
    }
    

    Sobald verbinde() aufgerufen wird, stürzt das prog mit einer memory access violation ab. Schuld ist eindeutig die zeile

    verbindungen.append(tmp);
    

    wenn aber die liste lokal in der methode ist, funktioniert es.


  • Mod

    Schon mal versucht, die Klasse _nicht_ von QObject abzuleiten?



  • jap, und auch mit den standard containern. Geht nicht, und das finde ich schon SEHR seltsam; als ob das problem gar nicht hier liegt, nur hier ausgelöst wird (frage: warum wirds hier ausgelöst...?)



  • Das Problem liegt nicht hier. Ich hab grad mit deinem Code (zusaetzlich noch eine minimale streckenabschnitt Klasse) ein Miniprogramm erstellt, dass ohne Problem durchlaeuft.

    Du musst mehr Code zeigen, andernfalls kann man nur glaskugeln..



  • jupp, der fehler liegt wirklich nicht hier. Hier war der Punkt, wo er auftrat ist mir eben aufgefallen. Muss jetzt mal gucken, hab da so eine idee. Meld mich dann, wenns geklappt hat (oder auch nicht ;D)

    edit

    ok, das problem war:
    Ich hatte eine QList, und wollte via operator[] was einfügen (liste[i] = new object()). Als ich dann wieder was auslesen wollte, war das ne zugriffsverletzung...


Anmelden zum Antworten