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

SL & STL C++ Discussion :

Enumeration pose problème


Sujet :

SL & STL 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 Enumeration pose problème
    Bonjour à tous,

    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:


    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
    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 é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
    Ceci n'a pas beaucoup de rapport avec la STL...

    Tu peux déclarer tes variables cl et vl comme des entiers et ça passera.

    Tu n'es pas obligé d'associer une valeur à chaque énuméré. Le compilateur incrémente de lui-même et ça évite de se retrouver avec un trou...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    enum TValeur{un=1,deux,...,roi};
    Autrement tu peux implémenter l'opérateur++ (indispensable si tu as des trous)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    inline void operator++ (TValeur & tv, int) {
      tv = TValeur(tv + 1);
    }
    En C++, on écrit TValeur directement, à la place de enum TValeur.

    A noter qu'en C l'incrémentation sur un enum marche.

  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
    Bonjour,
    (désolé pour la STL, en fait je viens à peine d'apprendre ce que c'est )

    Il n'y a pas de trou dans mon énumération, pour être sûr de moi j'ai fais comme vous m'avez indiqué:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    enum TValeur{un=1,deux,...,roi};
    mais je récolte toujours le même problème...
    j'ai donc essayé de surcharger aussi l'opérateur++, mais dans ce cas je récolte d'autre erreur.

    J'étais en train de me demander si cela n'étais peut être pas dut au fait que j'utilise une version BETA (et donc peut être à problème) de devC++ mais je ne pense pas...

    A savoir aussi que j'utilise pour programmer, un ficher .h et un fichier .cpp pour chaque classe (il me semble que tout le monde ne fonctionne pas comme ça...)

    Merci d'avance.

  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
    Non, ça m'étonnerait fortement que ça soit lié à la version béta. L'interface dev-cpp est peut-être en beta mais ce qui importe c'est le compilateur qui tourne dessous et qui lui n'est surement pas en beta.

    Un .h et un .cpp pour chaque classe c'est ce qui est habituel.

    Si tu as d'autres erreurs, poste-les dans le forum C++.

Discussions similaires

  1. CFormView::OnIntialUpdate() pose problème
    Par jacklafrip dans le forum MFC
    Réponses: 1
    Dernier message: 26/09/2006, 15h37
  2. caractère \ pose problème
    Par questionneuse dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 11/07/2006, 16h25
  3. Un cast de SmartPointer qui pose probléme
    Par Higestromm dans le forum C++
    Réponses: 3
    Dernier message: 13/10/2005, 10h25
  4. jointure externe avec un where, me pose problème!
    Par Danae dans le forum Langage SQL
    Réponses: 3
    Dernier message: 18/07/2005, 17h37
  5. Réponses: 3
    Dernier message: 17/05/2005, 11h16

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