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

MFC Discussion :

Passage de pointeur de dialog MFC


Sujet :

MFC

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 152
    Points : 49
    Points
    49
    Par défaut Passage de pointeur de dialog MFC
    Bonjour,

    j'ai un souci pour passer un pointeur de classe à une autre classe, je m'explique:

    j'ai une classe A qui contient l'instance d'une classe B et d'une classe C et je veux passer le pointeur de B à la classe C pour pouvoir utiliser les méthodes de B dans C.

    Dans le contructeur de ma classe A je fais donc

    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
     
    //#include B et C
    class A
    {
      B *m_MyB;
      C *m_MyC;
    }
    //#include B et C
    class C
    {
      public:
       B *m_MyB;
    }
    //constructeur de la classe A
    A()
    {
      m_MyB = new B();
      m_MyC = new C();
      C->m_MyB = this->m_MyB;
    }
    et donc celà plante.
    Le fait est que je suis aussi fort en c++ qu'un ours brun et que je ne vois pas pourquoi le pointeur passé comme celà ne fonctionne pas.

    Si quelqu'un peut me donner un coup de main là dessus :/

    merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 376
    Points : 41 545
    Points
    41 545
    Par défaut
    Bizarre...
    1°) ça plante, ça crashe, ou ça ne compile pas?
    2°) Tu as essayé sans le this ? peut-être qu'il est mal initialisé dans le constructeur...
    3°) Teste les retours de new : si ça se trouve, il y en a un qui échoue alors que les exceptions bad_alloc ne sont pas activées...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 152
    Points : 49
    Points
    49
    Par défaut
    disons que ça compile et que l'activeX (car c'est un activeX) plante, sort de IE en me disant des méchancetés, il faut aussi savoir que ma classe B est une classe d'une fenêtre de dialogue MFC et qu'avec ou sans this celà ne change pas.

    Je vais tester en effet les retours de new comme tu me l'as indiqué.

    Une question, pour toi, la méthode que j'ai exposée est correcte, il n'y a pas de souci de pointeur, d'adresse ou de quoique ce soit?

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 376
    Points : 41 545
    Points
    41 545
    Par défaut
    En tout cas, dans le petit morceau de code que tu as posté, je ne vois rien qui me choque...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 152
    Points : 49
    Points
    49
    Par défaut
    j'ai l'impression que je ne peux pas instancier de fenêtre de dialogue MFC avec un new, en mettant juste l'instanciation automatique dans le .h ça passe, avec un new stocké dans un pointeur ça casse, est ce que l'erreur ne viendrait pas du coté des MFC?

  6. #6
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    je me permet de déplacer le sujet dans le forum MFC.

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 376
    Points : 41 545
    Points
    41 545
    Par défaut
    Ben, à moins que ce soit des objets directement liés à des éléments d'interface graphique (et encore, je ne vois pas trop pourquoi ça ferait planter), je ne vois vraiment pas pourquoi...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 152
    Points : 49
    Points
    49
    Par défaut
    j'ai passé mon paramètre B dans un constructeur par copie de C avec une surcharge de l'opérateur =, et là ça marche.
    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
     
    MainDialog::MainDialog(const MainDialog& mainDialog) {
    	this->m_pThread = mainDialog.m_pThread;
    	this->m_hUpdateEvent = mainDialog.m_hUpdateEvent;
    	this->m_hEndThread = mainDialog.m_hEndThread;
    	this->m_hWaitThread = mainDialog.m_hWaitThread;
    	this->m_Test = mainDialog.m_Test;
    }
     
    MainDialog& MainDialog::operator=(const MainDialog& mainDialog) {
    	if(this==&mainDialog)
    		return *this;
    	this->m_pThread = mainDialog.m_pThread;
    	this->m_hUpdateEvent = mainDialog.m_hUpdateEvent;
    	this->m_hEndThread = mainDialog.m_hEndThread;
    	this->m_hWaitThread = mainDialog.m_hWaitThread;
    	this->m_Test = mainDialog.m_Test;
     
    	return *this;
    }
    constructeur par copie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Automate::Automate(MainDialog* main) {
    	m_MyMainDialog = main;
    }
    appel du constructeur par copie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_MyAutomate = new Automate(&m_MyMainDialog);

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

Discussions similaires

  1. passage de pointeurs entre appli delphi et DLL c++
    Par e-teo dans le forum Langage
    Réponses: 1
    Dernier message: 13/10/2005, 21h46
  2. Passage de pointeur en session
    Par goondi dans le forum Langage
    Réponses: 6
    Dernier message: 21/09/2005, 11h54
  3. [MFC]Pointeur sur Dialog
    Par benahpets dans le forum MFC
    Réponses: 4
    Dernier message: 20/06/2005, 15h57
  4. Problème passage de pointeur
    Par mick74 dans le forum MFC
    Réponses: 2
    Dernier message: 21/04/2004, 18h34
  5. [allegro]passage de pointeur sur image
    Par Gonath dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 13/12/2003, 18h47

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