Bonjour,
J'ai cette classe mère:
qui est héritée par cette classe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 class Widget { public: Widget(); ~Widget(); virtual void affiche(); };
J'ai un std::map de ce genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 class Bouton: public Widget { public: void affiche(); };
dans ce map je range un pointeur vers un objet bouton.
Code : Sélectionner tout - Visualiser dans une fenêtre à part std::map<std::string, Widget*> mWidgets;
puis j'apelle dans un autre thread fait de type SDL_Thread :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Bouton * objetBouton; objetBouton = new Bouton; mWidget["bouton"] = objetBouton;
Et j'obtient ceci lors de l'éxécution du programme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for (ptrMWidget = mWidget.begin(); ptrMWidget != mWidget.end(); ++ptrMWidget) { ptrMWidget->second->affiche(); //C'est ici que survient l'érreur de segmentation }
Fatal signal: Segmentation Fault (SDL Parachute Deployed)
Si je retire virtual devant la fonction memebre de la classe mère je n'ai plus l'érreur. Mais ce qui m'intéresse est bien sur de pouvoir redéfinir la classe mère ^^·
Si quelqu'un peut m'aider à comprendre d'ou provient l'érreur. Il se peut que ce soit du au thread, dans ce cas si il y as un moyen de procédé autrement sa m'intéresse aussi.
Merci d'avance
Partager