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 :

Boucle for et enum


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut Boucle for et enum
    Bonjour tout le monde !
    J'essaie d'utiliser un boucle for() sur un enum mais j'ai uniquement le droit à un "illegal operand mon_enum".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    enum mon_enum
    {
      enumA = 0x00,
      enumB = 0x01,
      enumC = 0x03
    };
     
    for (mon_enum s = enumA ; s <= enumC ; s++)
    {
      // Faire quelque chose
    }
    Quel est le problème ? A priori c'est possible (d'après mon "C++ - précis et concis")...

    Merci d'avance !

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Salut,

    On ne peut pas itérer sur une énumération.
    Par contre on peut convertir la valeur d'une énumération en entier, du coup le code suivant (semble) fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (int s = enumA ; s <= enumC ; ++s)
    {
      // Faire quelque chose
    }
    Je dis 'semble' car ça ne va vraisembablement pas faire ce que tu voulais puisque 's' va valoir tour à tour 0, 1, 2 et 3.
    Et 2 ne fait pas partie des valeurs possibles pour un élément de type mon_enum...

    MAT.

  3. #3
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    Je ne vois pas pourquoi on ne peut pas itérer sur un enum.
    Je cite "C++ - précis et concis" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    enum SpectreCouleur
    {
      Rouge, Orange, Jaune, 
      Vert, Bleu, Indigo,
      Violet
    };
    Le nom de l'énumération (SpectreCouleur dans cet exemple) n'est pas obligatoire mais il permet de définir des variables pouvant contenir des valeurs de l'énumération. Il est ainsi possible d'écrire une boucle parcourant l'ensemble de ces couleurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for (SpectreCouleur s = Rouge ; s <= Violet ; s++)
    {
    }

  4. #4
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Je confirme que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     for (SpectreCouleur s = Rouge ; s <= Violet ; s++) ...
    ne passe pas comme tel.
    En effet g++ me crie dessue qu'il n'y a pas d'opérateur ++ pour SpectreCouleur et il a bien raison.

    Par contre la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (int s = Rouge ; s <= Violet ; s++)
    marche sans problème.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  5. #5
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    Cette méthode, avec int, passe, mais suppose que les variables se suivent (pas de valeur spécifique avec un "saut" entre deux valeurs).

  6. #6
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    Alors, tant pis je vais faire avec .

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

Discussions similaires

  1. Boucle for dans un script cmd
    Par nicolas.ganache dans le forum Développement
    Réponses: 4
    Dernier message: 19/07/2004, 16h07
  2. Réponses: 3
    Dernier message: 06/07/2004, 10h21
  3. [Debutant] Batch et Boucle for
    Par ludovic.fernandez dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 06/05/2004, 19h21
  4. [Swing][boucles] for, do, if .....comment faire simple?
    Par chastel dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 02/05/2004, 22h49
  5. [langage] boucle "for" modification du pas
    Par K-ZimiR dans le forum Langage
    Réponses: 4
    Dernier message: 29/04/2004, 11h54

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