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 :

problème pointeur et type


Sujet :

C++

Vue hybride

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 23
    Par défaut problème pointeur et type
    Bonjour,

    j'ai créée un classe "joueur" qui contient une méthode nommée "afficher".

    Voici mon problème, quand je code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void Partie::test()
    {
        Joueur *joueurTemp;
        Joueur joueurTest("test");
        joueurTemp=&joueurTest;
        *joueurTemp.afficher();
    }
    Il me sort l'erreur
    request for member `afficher' in `joueurTemp', which is of non-class type `Joueur*'
    alors que quand je code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void Partie::test()
    {
        Joueur *joueurTemp;
        Joueur joueurTest("test");
        joueurTemp=&joueurTest;
        joueurTest.afficher();
    }
    ça marche très bien.
    Je ne comprends pas où est le problème, pourquoi est ce que *joueurTemp ne redirige pas correctement vers joueurTest

    merci beaucoup

  2. #2
    Membre expérimenté Avatar de Rewpparo
    Homme Profil pro
    Amateur
    Inscrit en
    Décembre 2005
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 170
    Par défaut
    C'est un problème de priorité des opérateurs. Comme tu peux le voir ici par exemple les opérateurs . et -> ont une priorité bien supérieure à *. Le compilateur va donc d'abord évaluer ->, ensuite évaluer *.

    Ecrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    *joueurTemp.afficher();
    C'est équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    *( joueurTemp.afficher() );
    il faut donc lever l'ambiguité avec des parenthèses
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (*joueurTemp).afficher();
    Ou plus simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    joueurTemp->afficher();
    (mais je suppose que c'était pas le but)

    Maintenant relis le message d'erreur, tu verras il est très clair

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 23
    Par défaut
    ça marche, merci beaucoup pour tout et pour les cours et tutoriels pour apprendre C++ Rewpparo !

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/03/2013, 21h08
  2. [Débutant][Phppgadmin] problème avec les types
    Par PoY dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 19/08/2004, 17h06
  3. [MFC] Problème pointeur sur une classe
    Par mick74 dans le forum MFC
    Réponses: 7
    Dernier message: 14/04/2004, 14h17
  4. [jointure] Petit problème sur le type de jointure...
    Par SteelBox dans le forum Langage SQL
    Réponses: 13
    Dernier message: 13/02/2004, 18h55
  5. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48

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