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!