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

C++ Discussion :

Histoire de pointeurs ...


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 31
    Par défaut Histoire de pointeurs ...
    Bonjour,

    J'ai un leger problème avec un pointeur :

    Je le déclare dans une classe comme suis : scheduleI* s;
    Puis je lui affecte une valeur comme suit : this->s = s; sachant qu'il est instancié en amont. Bref, jsuque la tout va bien.

    Ensuite, j'ai créé une fonction qui est appelée que sur évenement :

    void scheduleViewerI::OnPaint(wxPaintEvent& evt)
    {
    (...)
    // N° machine.
    wxFont MaFont3(12, wxROMAN , wxNORMAL, wxNORMAL, false);
    MonDc.SetFont(MaFont3);
    for (int i = 1; i <= s->fonction(); i++)
    MonDc.DrawText((wxString) "Machine n° " + IntToString(i), 5, 30*i);
    (...)
    }

    Et s n'existe plus, j'ai le droit à une erreur ...

    Qu'est ce qui peut bien se passer ?

    Merci d'avance

    ++ Eddy.

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Normal, si s n'existe plus, on a plus le droit de faire s->fonction().

  3. #3
    Membre chevronné Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Par défaut
    Pleins de choses, quelle est cette erreur ?

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    le callback que tu as fourni n'est probablement pas bon, tu n'as pas du binder ton objet.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 31
    Par défaut
    Hum, à priori je déclare mon instance "s" dans la fonction main() donc l'instance "vit" jsuqu'à la fin du programme. Ensuite je la passe en parametre d'une instance d'un nouvel objet via un pointeur : "nouvel objet = new C(s)".

    Finalement, dans le constructeur de C, je link (j'affecte) s à un pointeur pour me permettre de le manipuler en aval.

    Cependant, ma classe C possede une fonction F qui doit utiliser "s", hors des que je cherche à lui faire appel, j'ai l'impression que l'objet n'existe plus ...

    Voici l'erreur :

    Exception non gérée à 0x0040d321 dans schedule.exe:0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0x00000014.

    J'oubliais de dire que dans le constructueur j'ai aussi besoin de "s" et l'appel ne pose aucun probleme. C'est donc à la sortie du constructeur, lorsque mon programme appel ma fonction F (qui s'avere etre la fonction PAINT appelé sur evenement et décalrée dans la classe C) que l'objet "s" n'exsite plus.

    Merci,

    Eddy.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 159
    Par défaut
    Hum, Je vois pas très bien l'architecture de ton projet,
    mais bon:
    - Toujours tester ses pointeurs avant de les utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     if(NULL !=s) {...}
    - faire this->s =s n'est-il pas équivalent à s=s ??

    - alors, que fait le destructeur sur "s" ?

  7. #7
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Citation Envoyé par Luther13
    - faire this->s =s n'est-il pas équivalent à s=s ??
    Non, on peut avoir une variable locale s et une variable membre s.
    Est-ce que on peut avoir plus de code, là où est défini s, ...

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 159
    Par défaut
    Oui, je sais. Mais c'est juste pour souligner la confusion du nom des variables.

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

Discussions similaires

  1. Un histoire de pointeurs ?
    Par monsterhunter dans le forum Débuter
    Réponses: 7
    Dernier message: 18/12/2013, 21h33
  2. Une histoire de pointeurs
    Par 0_Azerty_0 dans le forum Langage
    Réponses: 9
    Dernier message: 14/07/2012, 12h57
  3. Histoire de pointeur
    Par stmastma dans le forum Débuter
    Réponses: 6
    Dernier message: 19/10/2011, 21h36
  4. Encore une histoire de pointeur
    Par Supersami2000 dans le forum C
    Réponses: 5
    Dernier message: 11/07/2008, 13h42
  5. djgpp et pointeurs far
    Par elvivo dans le forum C
    Réponses: 2
    Dernier message: 13/07/2002, 00h44

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