IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

wxWidgets Discussion :

Utilisation de la classe List de STL avec wxWidgets


Sujet :

wxWidgets

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Points : 1 069
    Points
    1 069
    Par défaut Utilisation de la classe List de STL avec wxWidgets
    J'ai essayé de retourner le problème dans tous les sens mais je ne comprends toujours pas. J'ai un truc qui compile très bien mais j'ai un segmentation fault et je ne comprends pas pourquoi.

    Voici la définition de la classe.
    Le problème est lié à la liste pts.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    class Panel : public wxPanel {
     
        public:
            Panel(wxWindow *parent);
            void AddPoint(int x, int y);
            void OnPaint(wxPaintEvent& event);
            void SetTimeRange(int start, int end);
            void SetAutomaticTime(bool b);
     
        private:
        	int tstart, tend;
        	int min, max;
        	bool automaticTime;
        	list<wxPoint *> pts;
     
            void GetMinMax&#40;&#41;;       	
            wxPoint *Map&#40;wxPoint &pt&#41;;          
        	void Drawpoint&#40;wxDC &dc, wxPoint &pt&#41;;
     
        	DECLARE_EVENT_TABLE&#40;&#41;
     
    &#125;;
    et une partie des méthodes associées

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Panel&#58;&#58;Panel&#40;wxWindow *parent&#41; &#58; wxPanel&#40;parent&#41;, automaticTime&#40;true&#41; &#123;&#125;
     
    void Panel&#58;&#58;AddPoint&#40;int x, int y&#41; &#123;
     
        bool refresh = false;
     
        if&#40;pts.empty&#40;&#41;&#41; &#123;
            min = y;
            max = y;
        &#125;
        ...
    &#125;
    et j'appelle ceci avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Panel *panel = new Panel&#40;this&#41;;
    panel -> AddPoint&#40;0,0&#41;;
    Quand je fais ceci, j'ai un segmentation fault à l'appel de pts.empty(). Pourtant, tout est initialisé correctement. Je précise que j'ai essayé avec une liste d'entiers aussi. J'ai essayé d'appeler d'autres fonctions autre que empty() mais c'est pareil.

    Si quelqu'un à déjà vu ceci et qu'il a trouvé une solution, merci de me répondre.

    Je compile avec wxDev-Cpp sous windows et j'ai essayé avec gcc sous debian mais le problème apparait aussi.


    [ Modéré par BigBoomShakala ] - Ajout des balises [code] - Merci d'y penser par la suite

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 62
    Points : 83
    Points
    83
    Par défaut
    Tout semble OK !
    Le plantage ne vient pas d'une mauvaise utilisation de la liste.

    Peut-être un problème de DLL !?!
    Utilises-tu d'autre container STL ?

  3. #3
    jmv
    jmv est déconnecté
    Membre confirmé Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 394
    Points : 591
    Points
    591
    Par défaut
    pareil... je ne vois pas de pb dans ton code.

    Es-tu sûr que c'est pts.empty() qui pose problème ?

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Il fautdrait voir comment tu manipules ta liste en dehors de ce pts.empty(). Tu es sûr que c'est cet appel qui crash l'appli ?

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Points : 1 069
    Points
    1 069
    Par défaut
    Merci de vos réponses.

    Dans mon prog j'utilise exclusivement des listes pour stocker des coordonnées de points. Sinon, j'avais essayé avec des vecteurs et c'est la même chose.

    Je suis pratiquement sur que c'est pts.empty() qui pose problème.
    Quand j'utilise le debugger de wxdev-cpp, il s'arrête à cette instruction et m'ouvre le fichier .h de la stl correspondant (je ne me rappelle plus le nom) et me dit qu'il y a un problème d'accés mémoire dans la fonction empty (la fonction empty se résume à une ligne). J'ai l'impression que l'initialisation de la liste ne se fait pas completement ou n'est pas correcte.

    Ca crashe au premier appel que je fais sur cette liste. Si je n'appelle pas AddPoint, le prog marche mais ça ne sert à rien si je ne peux pas stocker les points en question.

    En tout cas, ça me rassure que vous trouviez que mon code est correct. Je commencais à douter de moi.

    J'ai essayé sous windows et linux, et à part changer de compilateur je ne vois pas quoi faire. Le pire, c'est que j'ai déjà fait des trucs de ce style là, utiliser des listes ou des vecteurs dans wxWidgets et je n'avais jamais eu de problèmes avant.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 62
    Points : 83
    Points
    83
    Par défaut
    Je serai toi, je ferai un petit essai en changeant juste le nom de la classe Panel.
    On dirait que tu utilises une classe qui est définit autrement.
    Ca arrive parfois quand on laisse traîner des vieux fichiers.

    Bon courage !

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Points : 1 069
    Points
    1 069
    Par défaut
    J'ai renommé la classe et les fichiers en MyPanel.
    Ca n'a rien changé.

    Je crois que je vais tailler dans le code wxWidgets, virer des trucs qui servent à rien, j'ai l'impression que c'est à lui que ça ne plait pas.

    Merci

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Points : 1 069
    Points
    1 069
    Par défaut
    J'ai repris un ancien projet, enlevé ce qui était inutile à l'intérieur, appelé ma classe Panel à partir de ce projet et maintenant ça marche.
    La classe en elle-même marche très bien. C'était l'environnement autour d'elle qui la faisait planter. Mais pourquoi ? Grand mystère.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/03/2014, 16h33
  2. Utilisation d'une class CSS en Xsl avec page-break
    Par TiBen dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 09/10/2008, 18h17
  3. Réponses: 7
    Dernier message: 05/10/2006, 09h07
  4. Utilisation des liste liées (ajax) avec du perl
    Par Jim_Nastiq dans le forum Web
    Réponses: 1
    Dernier message: 12/07/2006, 13h07
  5. Réponses: 16
    Dernier message: 07/04/2005, 12h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo