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++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2004
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 306
    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
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    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.
    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 éclairé
    Inscrit en
    Juillet 2004
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 306
    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 confirmé

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

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    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