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 :

Enum Range


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2002
    Messages : 82
    Points : 49
    Points
    49
    Par défaut Enum Range
    Bonjour,

    Comment faire pour vérifer l'existence d'une valeur dans un type enum ?

    J'aimerais réaliser une opération du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    enum Node{S,L,NO_NODE_TYPE };
     
    int main(int argc, char* argv[])
    {
    	Node pNode;
     
    	bool r = 5 in Node;
     
    	return 0;
    }
    Merci,
    L'expérience est une lanterne qui n'éclaire que le chemin déjà parcouru.

  2. #2
    Membre averti Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Points : 412
    Points
    412
    Par défaut
    Je ne comprend pas bien ce que tu veux faire ?
    Tu veux savoir quel valeur on as donné a un enum ?
    J'aime pas les épinards... Mais alors pas du tout

  3. #3
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Je viens de faire ce petit test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    enum Node{S,L,NO_NODE_TYPE };
    int main(void) 
    {
       enum Node pNode = S;
       int i;
       for(i = 0; i < 10; i++)
       {
         printf( "%d \n", pNode);
         pNode = pNode + 1;
       }
      return 0;
    }
    Ca passe très bien, même pas un Warning à la Compil avec Visual C, alors que Borland C Builder me faisait remarquer que j'assignais un entier à pNode.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2002
    Messages : 82
    Points : 49
    Points
    49
    Par défaut
    En fait les valeurs de node sont 0(S),1(L),2(NO_NODE_TYPE).

    Je cherche juste à tester si une valeur est comprise dans mon enum.

    Par exemple, je fait

    Node pNode;
    int a = 5;

    ensuite je vérifie si Node accepte a et je fait :

    pNode = (Node)a;

    Merci,
    L'expérience est une lanterne qui n'éclaire que le chemin déjà parcouru.

  5. #5
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    5 n'est pas dans l'enum. Les seules choses qui sont dans l'énum sont : S, L, et NO_NODE_TYPE. Il n'y a ni 0, 1, 2, ou 42.
    Quel est ton problème, de haut niveau, que tu veux résoudre ?
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  6. #6
    Membre averti Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Points : 412
    Points
    412
    Par défaut
    En général pour connaite la taille maximale d'un enum on fais comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    enum Node{S,L,NO_NODE_TYPE, NB_MAX_NODE_TYPE };
    en mettant NB_MAX_NODE_TYPE en dernier tu est sur qu'il auras la valeur du nombre réel de choix dans ton enum (ici il vaudra 3)
    ton enum sera donc compris entre 0(inclus) et NB_MAX_NODE_TYPE (exclus)
    J'aime pas les épinards... Mais alors pas du tout

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2002
    Messages : 82
    Points : 49
    Points
    49
    Par défaut
    Ok super cela résou mon problème.

    MERCI
    L'expérience est une lanterne qui n'éclaire que le chemin déjà parcouru.

  8. #8
    HRS
    HRS est déconnecté
    Membre confirmé
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    677
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 677
    Points : 638
    Points
    638
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #include <stdio.h>
    enum Node{S,L,NO_NODE_TYPE };
    int main(void)
    {
       enum Node pNode = S;
       int i;
       for(i = 0; i < 10; i++)
       {
         printf( "%d \n", pNode);
         pNode = pNode + 1;
       }
      return 0;
    }
    Compilé avec le MinGW

    gcc -> pas d'erreur
    g++ -> erreur "invalid conversion from int to Node" sur "pNode = pNode + 1;"

    quant à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    enum Node{S,L,NO_NODE_TYPE };
    int main(void)
    {
      enum Node pNode = 2;
      return 0;
    }
    même erreur avec g++

    quand à VC++, les versions < 7.1 sont pas réputées pour leur rigueur
    en termes de respect de la norme

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

Discussions similaires

  1. Enum Set range
    Par domxaline dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 03/06/2010, 14h22

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