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 d'une énumération


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 239
    Par défaut Problème d'une énumération
    Bonjour à tous,
    je copie ici ce que j'ai posté dans une mauvaise section du forum (j'espère ne pas m'être trompé cette fois):


    Alors voici, je voudrais créer un jeu de carte en C++ et pour ce faire, j'ai utilisé l'énumération pour créer mes cartes:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    enum TValeur{un=1,deux=2,...,roi=13};

    (de même pour les quatre couleurs que j'ai appelé "TCouleur")

    Cela dis, étant débutant en C++ (comme en programmation en général) je ne connais pas très bien l'énumération.

    mon problème est que je dois faire une boucle for dans ma classe paquetdecarte comme suit:


    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
    Code :
     
    PaquetDeCarte::PaquetDeCarte()
    {
         int i=0;
     
         for(enum TValeur vl=un; vl<=roi; vl++)
         {
              for(enum TCouleur cl=coeur; cl<=pique; cl++)
              {
                    T[i]=new Carte(vl, cl);  // T étant un pointeur sur Carte.
                    i++;
              }
         }                                
    }


    Mais voila, le compilateur m'affiche une erreur concernant les vl++ et cl++
    voici l'erreur:


    no `operator++(int)' declared for postfix `++', trying prefix operator instead
    no match for 'operator++' in '++((Carte*)this)->Carte::Val'
    Voila donc je souhaiterais un coup de pouce de votre part (sachant que je compile sous devC++ 4.9.9.2 BETA)

    Si vous avez besoin de tout mon projet, je peux vous le passer.

  2. #2
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    A ma connaissance, le mot clef enum ne peut être utilisé que pour définir ton enum (je crois qu'il n'est même pas possible de faire une déclaration anticipée).

    Tu vas avoir des problemes si tu essaye de faire ++ sur une enum.

    La solution est de convertir ton enum en type de base comme int ou size_t

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        for( int vl=un; vl<=trois; ++vl)
        {
        }

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 239
    Par défaut
    Ok j'essaierai ça dès ce soir,
    la conversion d'une enum vers un int ce fait bien automatiquement sans ligne de programme?

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Par défaut
    Je n'avais pas compris que tu n'avais pas vu dans mon message qu'on pouvait utiliser un entier pour désigner un enum. Oui, la conversion est automatique.

    Autre solution, surcharger l'opérateur ++ mais tu n'en as pas nécessairement besoin mais je l'ai déjà expliqué ici http://www.developpez.net/forums/sho...d.php?t=456045

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 239
    Par défaut
    Oui, j'avais essayé pour la surcharge de l'operateur++ mais celle ci me posait des erreurs de compilation aussi et étant donné que tu m'avais dis qu'il n'y avait normalement pas de problème tant qu'il n'y avait pas de trou dans mon enum.

    Je vais essayer le code maintenant...

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Par défaut
    Citation Envoyé par Somato Voir le message
    tu m'avais dis qu'il n'y avait normalement pas de problème tant qu'il n'y avait pas de trou dans mon enum
    Non, ce n'est pas ce que j'avais voulu dire mais j'avoue que c'était ambigu. Si tu veux pouvoir utiliser un entier pour désigner un enum, il faut absolument qu'il n'y ait pas de trous.

    La surcharge de l'opérateur ++ telle que je te l'ai donné ne devrait pas poser de problèmes de compilation mais dans ton cas n'est pas forcément nécessaire.

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

Discussions similaires

  1. Problème génération d'une énumération.
    Par slopez dans le forum BOUML
    Réponses: 6
    Dernier message: 26/10/2008, 23h42
  2. problème avec une requête imbriquée
    Par jaimepasteevy dans le forum Langage SQL
    Réponses: 13
    Dernier message: 05/12/2003, 10h29
  3. Problème sur une requête INSERT
    Par Marion dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/06/2003, 08h45
  4. problème sur une requête!!!!!
    Par Mcgrady_01 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/06/2003, 01h17
  5. Problème avec une procédure stockée
    Par in dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/05/2003, 15h33

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