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 :

[Debutant] Nouvelle question sur les pointeurs


Sujet :

C++

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2004
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 306
    Points : 122
    Points
    122
    Par défaut [Debutant] Nouvelle question sur les pointeurs
    Bonjour,

    je développe un client DCOM. Dans ce client, j'initialise une interface, puis j'appelle une méthode de cette interface. Cette méthode demande en paramètre un pointeur de pointeur et retourne une valeur hr de type HRESULT.
    Je teste ensuite cette valeur avec la méthode SUCCEEDED(hr) pour savoir si ma fonction s'est bien déroulée.
    TRUE est retournée en cas de succès et FALSE en cas d'échec.

    Comme je le disais la méthode attend un pointeur de pointeur de type HRESULT qui est en fait un tableau de valeur HRESULT.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    HRESULT fonctionDCOM(HRESULT** argument);
    Dans mon code, j'ai donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    HRESULT** args;
    hr=fonctionDCOM(args);
    if SUCCEEDED(hr) {
         //Reussite
    }
    else //Echec
    Avec ce bout de code la fonction échoue. Il n'y a pas d'erreur. Simplement SUCCEEDED(hr) retourne FALSE

    Par contre, si je passe en paramètre un pointeur, cela fonctionne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    HRESULT *args;
    hr=fonctionDCOM(&args);
    if SUCCEEDED(hr) {
         //Reussite
    }
    else //Echec
    Avec ce bout de code la fonction réussit.
    SUCCEEDED(hr) retourne TRUE

    Est-ce que quelqu'un a une explication ?
    Cela vient certainement d'une incompréhension de ma part sur les pointeurs parce que selon moi, le résultat de mes deux bouts de code est le même. Non ?

    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 379
    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 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Le problème, c'est que tu passes un pointeur sur nimp à ta fonction.

    Ce genre de fonction modifie une donnée, il faut donc lui passer un pointeur valide sur la donnée à modifier (ici, un HRESULT *)

    Donc, les deux codes sont tout à fait différents: dans l'un, tu passes un HRESULT ** invalide, dans l'autre un HRESULT** valide.

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2004
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 306
    Points : 122
    Points
    122
    Par défaut
    En fait tout simplement parce que mon pointeur de pointeur
    HRESULT** ppArgs n'est pas initialisé.
    Donc dans ppArgs, il n'y a aucune valeur, ou une valeur incohérente.
    Il n'y a pas du tout l'adresse de pArgs, alors qu'en passant en paramètre &pArgs, la valeur est une adresse, celle de pArgs.
    C'est bien cela, n'est-ce pas ?

    Bon bah, si j'avais réfléchi un minimum .... je ne serai pas en train d'écrire ces quelques lignes.

    Bon et bien merci.
    ++

  4. #4
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 683
    Points
    10 683
    Billets dans le blog
    3
    Par défaut
    Pense à cliquer sur Résolu

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

Discussions similaires

  1. question sur les pointeurs
    Par jd.baculard dans le forum Langage
    Réponses: 3
    Dernier message: 18/03/2006, 02h30
  2. Question sur les pointeurs.
    Par Chrisemi dans le forum C++
    Réponses: 5
    Dernier message: 28/10/2005, 23h47
  3. questions sur les pointeurs
    Par Hyoga dans le forum C++
    Réponses: 17
    Dernier message: 08/01/2005, 23h25
  4. [Static] nouvelle question sur les blocs static
    Par Alec6 dans le forum Langage
    Réponses: 2
    Dernier message: 25/11/2004, 18h09
  5. [debutant STL] question sur les vectors
    Par killerjeff dans le forum SL & STL
    Réponses: 13
    Dernier message: 19/08/2004, 17h32

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