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

Langage C++ Discussion :

parcourir un enum à la compilation


Sujet :

Langage C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Par défaut parcourir un enum à la compilation
    Bonjour à tous
    Me revoici avec un question bizarre de métaprogrammation.
    Pensez vous qu'il soit possible de parcourir un enum par le compilateur.
    Ex: je souhaiterai connaitre la somme des éléments d'un enum.
    Merci Mathieu

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 43
    Par défaut
    Les enum se suivent non ?
    Donc pas besoin de compilo.
    Juste une formule avec les suites !

    p= le nombre du debut des enum
    n= le dernier nombre a la fin de l'enum

    ((n-p+1)*(n+p))/2 = la somme des nombres

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Par défaut parcourir un enum à la compilation
    Oui mais j insiste pour que le compilateur fasse cette opération
    je prends comme enum
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    typedef enum{a=0,b=3,c=4} TYPE;
    je souhaiterai également connaitre le cardinal de TYPE, la valeur du second élément. Tout ca par le compilateur.

    Mathieu

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Jette un œil là-dessus.

  5. #5
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Citation Envoyé par Math75 Voir le message
    Oui mais j insiste pour que le compilateur fasse cette opération
    je prends comme enum
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    typedef enum{a=0,b=3,c=4} TYPE;
    je souhaiterai également connaitre le cardinal de TYPE, la valeur du second élément. Tout ca par le compilateur.

    Mathieu
    En gros : tu ne peux pas - en tout cas, pas de manière générique. Tu n'as aucun moyen de connaître le nombre d'éléments d'une énumération, ni la valeur de chaque élément.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class MyEnum
    {
        enum {a, b, c} pouet;
        static std::vector<pouet> foo;
    };
     
    MyEnum::foo(a) = 0;
    MyEnum::foo(b) = 3;
    MyEnum::foo(c) = 4;
     
    size_t nbre_enum = MyEnum.foo.size();
    Bon, il manque des choses, mais ça te fait une piste.
    Pas trop le temps de fournir une solution complète. :-)

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Par défaut parcourir un enum à la compilation
    Alors disons le autrement.

    Je considèe un enum que je ne peux altérer
    Comment connaitre son cardinal A LA COMPILATION, par exemple?
    Merci

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Par défaut
    en effet il se peut qu'il n'y ait pas de réponse en C++

  9. #9
    Invité
    Invité(e)
    Par défaut
    Si tu n'affectes pas de valeurs aux éléments de ton énum, tu peux faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    enum {v1,v2,v3,nbval};
    La dernière valeur de l'enum est son "cardinal", c'est à dire le nb d'éléments qui la précède. C'est assez pratique, si tu insères une valeur au milieu, le compilateur renumérote, et tout fonctionne encore.

    Francois

  10. #10
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Citation Envoyé par Math75 Voir le message
    en effet il se peut qu'il n'y ait pas de réponse en C++
    C'est pas "il se peut". C'est sûr : il n'y a pas de réponse à ta question en C++.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/01/2014, 11h12
  2. Parcourir les element d'un flag enum
    Par olibara dans le forum C#
    Réponses: 6
    Dernier message: 31/08/2012, 15h44
  3. Réponses: 0
    Dernier message: 30/06/2010, 11h47
  4. Réponses: 5
    Dernier message: 20/03/2007, 11h35
  5. Réponses: 1
    Dernier message: 27/05/2002, 01h44

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