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 :

Un pendu en POO, problème


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Décembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Un pendu en POO, problème
    Bonsoir à tous.

    J'ai découvert la POO depuis 1 mois.
    J'ai débuté avec un jeu du Pendu, seulement je rencontre un petit problème!

    Dans cette condition, je cherche à tester si la lettre saisie (qui est un string) correspond bien à une lettre de mon motPioché (J'ai une fonction qui pioche un mot dans un vector de string).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for(unsigned int i = 0; i < motPioche.size(); i++)
            if(motPioche.at(i) == LettreSaisie)
            {
                motCache.at(i) = lettreSaisie; // on remplace les lettres bonnes.
                n += 1;
            }
    Lors de la compilation, je remarque une erreur m'indiquant qu'il n'a pas trouvé d'opérateur== .
    Cependant je ne comprend pas pourquoi j'ai besoin d'un opérator sachant qu'on test simplement deux variables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pendu.cpp:69: error: no match foroperator==’ in ‘((std::string*)motPioche)->std::basic_string<_CharT, _Traits, _Alloc>::at [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>](((long unsigned int)i)) == lettreSaisie’
    Pourriez vous m'éclairer SVP


    Cordialement, Antoine.

  2. #2
    En attente de confirmation mail

    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 639
    Points : 2 347
    Points
    2 347
    Par défaut
    Quels sont les types déclarés des variables motCache, LettreSaisie et lettreSaisie ?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Décembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Petite erreur de ma part, je n'ai qu'une seule variable : lettreSaisie.

    lettreSaisie, motCache ainsi que motPioche sont de type String.

    Voici la méthode complète :

    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
    21
    22
    23
    24
    25
    26
    27
    28
     
    int Pendu::devinerMotMystere(string lettreSaisie, string &motPioche, string motCache)
    {
        int n = 0;
     
        // TODO
        // n = lettreDejaTape(motPioche, lettreSaisie, nbCoupsJoues); On test si la lettre a deja été tapée, si déjà tapée n > 0
     
        if(n > 0) return 2; // on quitte la fonction
     
        for(unsigned int i = 0; i < motPioche.size(); i++)
            if(motPioche.at(i) == lettreSaisie)
            {
                motCache.at(i) = lettreSaisie; // on remplace les lettres bonnes.
                n += 1;
            }
     
        if(n == 0) // Lettre absente
        {
            nbCoupsJoues++;
            return 0;
        }
        else // Lettre présente
        {
            nbCoupsJoues++;
            return 1;
        }
    }

  4. #4
    Membre habitué

    Inscrit en
    Avril 2011
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 55
    Points : 147
    Points
    147
    Par défaut
    Salut,

    si j'ai bien compris, motPioche, lettreSaisie et lettre saisie sont de type std::string. Donc d'après la doc std::string, motPioche.at(i) est de type char.

    Je pense que ton erreur peut se traduire par "ya pas de fonction permettant de comparer un char et un std::string". Essaye de charger le type de lettreSaisie en char.

    liens pour la doc std::string
    http://www.cplusplus.com/reference/string/string/at/

Discussions similaires

  1. [POO] Problème avec l'utilisation de classes.
    Par sekiryou dans le forum Langage
    Réponses: 3
    Dernier message: 16/02/2006, 18h54
  2. [POO] Problème de code PHP avec Internet Explorer
    Par bzoler dans le forum Langage
    Réponses: 5
    Dernier message: 12/02/2006, 11h00
  3. [AS2] [POO] Problème de duplication d'un MovieClip
    Par segphault dans le forum ActionScript 1 & ActionScript 2
    Réponses: 5
    Dernier message: 11/01/2006, 15h44
  4. [POO] Problème de paramètre passé par référence
    Par dug dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 31/08/2005, 20h29
  5. [POO] Problème lors de l'appel d'une propriété d'un objet.
    Par akecoocoo dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/08/2005, 08h51

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