Speicherzugriffsfehler +QMap +Iterator initialisierung +Konstruktor



  • Hi, Ich bekomme einen Speicherzugriffsfehler bei Folgendem Code:

    class CIM_OpenGL_Pen_RAW_TOPO : public QWidget
    {
    
        Q_OBJECT
    
            QMap<unsigned int,CIM_Point *> point_pen_palette;
            QMap<unsigned int,CIM_Point *>::iterator point_pen_palette_it;
            QMap<unsigned int,CIM_Point *>::iterator Aktual_point_pen_palette_it;
    
            CIM_Line *Default_Line_Pen;
            QMap<unsigned int,CIM_Line *> line_pen_palette;
            QMap<unsigned int,CIM_Line *>::iterator line_pen_palette_it;
            QMap<unsigned int,CIM_Line *>::iterator Aktual_line_pen_palette_it;
    
        private:
            QWidget *Parent;
            QMainWindow *MainWin;
    
    };
    

    Und dann im Konstruktor:

    CIM_OpenGL_Pen_RAW_TOPO::CIM_OpenGL_Pen_RAW_TOPO( QWidget * parent ,QWidget *mainwin,QMap<unsigned int,FList<long double> *> *contour,QMap<unsigned int,QMap<unsigned int,FList<long double> *> *> *faceOfContour):
    QWidget(parent)
    {
    
        Parent=parent;
        MainWin=static_cast<QMainWindow *>(mainwin);
        static_cast<CIM_Main_Window *>(MainWin)->register_cim_class(this,CIM_CLASS::CIM_OPENGL_PEN_RAW_TOPO);
        std::cout.flush();
    
        setVisible(false);
    
        //Speicherzugriffsfehler
        point_pen_palette_it=point_pen_palette.end();
        Aktual_point_pen_palette_it=point_pen_palette.end();
    
         //Speicherzugriffsfehler
        line_pen_palette_it=line_pen_palette.end();
        Aktual_line_pen_palette_it=line_pen_palette.end();
    
    }
    

    Woran kann das liegen ?? Sind meine QMaps ev. noch nicht auf dem Speicher ??
    Wenn ja, muss ich dann ein ::new verwenden ???
    Oder müßte der code so einwandfrei laufen, und ich muss den Fehler wo anderst suchen ??

    Gruß



  • Da ist ja einiges los...
    Fuer was speicherst du iteratoren als Klassenmember?
    Warum speicherst du ein QMainWindow *MainWin als Member, uebergibst dem Konstruktor aber ein QWidget, und machst dann einen static_cast bei jedem Zugriff?
    Speicher doch gleich einen Pointer auf CIM_Main_Window, und uebergib auch einen an den Konstruktor...

    Der eigentliche Fehler muss an einer anderen Stelle liegen, Denn da wo "Speicherzugriffsfehler" steht passiert nichts boeses. Ausser eben der static_cast drueber geht schief...
    Schmeiss einfach mal den Debugger an, der sagt dir schon was schief geht!


Anmelden zum Antworten