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 :

question sur enum


Sujet :

C++

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 180
    Points : 86
    Points
    86
    Par défaut question sur enum
    bonjour!

    je declare:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include<iostream>
    using namespace std;
     
    int main()
    {
    	enum status{libre,marie};
    	status david=marie;
    	cout<<david;
    	return 0;
    }
    mais je voudrais qu il m affiche "marie" et pas 0 ou 1!!

    comment faire?

  2. #2
    Membre régulier Avatar de Blowih
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 122
    Points : 115
    Points
    115
    Par défaut
    salut,
    peut etre en redefinissant l'operateur << pour ton enum, mais je sais pas si c'est possible

    sinon avec un truc du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include <iostream>
    int main(int argc, char** argv)
    {
       enum mon_enum{ e1, e2};
       string enum_label[]={"label_e1","label_e2"};
       std::cout << enum_label[e1] << std::endl;
       return 0
    }

  3. #3
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 180
    Points : 86
    Points
    86
    Par défaut
    si l operator<< accepte le enum c est quil a deja une version qui recoit les enum!!

    si j en fait un autre jpense que ca me fera une erreur!!

  4. #4
    Membre régulier Avatar de Blowih
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 122
    Points : 115
    Points
    115
    Par défaut
    je pensai a un turc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    enum MonEnum{...}; //i on considere ce type;
    std::ostream operator<<(std::ostream& os, const MonEnum& data) // on pourai imaginer une surcharge de ce type
    mais je suis pas sur que se soit possible.

    si l operator<< accepte le enum c est quil a deja une version qui recoit les enum!!
    les valeur d'un enum sont des entiers, je pense que l'operateur<< agit en consequence

    je ne suis pas certain de ce que j'avance , je serait vraimet interressé de savoir si je dis des betise ou pas

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 159
    Points : 171
    Points
    171
    Par défaut
    Un enum est un type entier ! il n'est pas destiné à l'affichage.
    il permet simplement au developpeur de ne pas manipuler des chiffres(1, 2,163,677) qui sont moins parlant.

    Solution possible:
    tu peux faire une fontion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string getEnumTypeInfo(enum)
    qui retourne la chaine de caractère ou description correspondant à l'énumerateur.

  6. #6
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 180
    Points : 86
    Points
    86
    Par défaut
    j ai essaye ca:

    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
    16
    17
    18
    #include<iostream>
    using namespace std;
     
    enum status;
     
    void operator<<(ostream& ,status );
     
    int main()
    {
    	enum status{libre,marie};
    	status david=marie;
    	cout<<david;
    	return 0;
    }
    void operator<<(ostream& out,status dupont)
    {
    	out<<"bonjour"<<endl;
    }
    ca se compile sans erreur mais il faisait comme si mon operateur n existait pas!!!

    je pense que puisque le compilo trouve deja un operateur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ostream::operator<<(status)
    il ne regarde pas l operateur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    operator<<(ostream,status)
    que pense tu??

  7. #7
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 180
    Points : 86
    Points
    86
    Par défaut
    et si tu as raison que enum est un int!!!

    a plus forte raison que je ne pourrai pas changer l operateur!!

  8. #8
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Dans ce cas là tu peux "encapsuler" ton enum dans une class, tu y redéfinis l'opérateur, tu mets ton tableau de string si ca te fait plaisir aussi ^^
    Et là, hop, il ne saura pas afficher sans ta redéfinition d'opérateur, et hop, t'as gagné.

  9. #9
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Il y a des mécanismes qui gèrent les enumérations avec leur représentation textuelle. De mémoire, un truc très barbare à base de macros ; et vraiment pas sûr, un truc assez propre mais je ne me rappelle plus du tout où.

  10. #10
    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
    Un long passage dans la FAQ Comeau.
    Sinon, je suis plutôt du genre à penser qu'utiliser un script (perl ou autre) qui analyse nos enums est ecore le mieux si la correspondance est immédiate -- et qu'il ne s'agit pas de remplacer TM par "Telemetry" et autres chaines avec des espaces.
    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...

Discussions similaires

  1. Question sur la surcharge de constructeur avec enum ?
    Par LiTiL_DiViL dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 05/04/2013, 12h53
  2. Question sur Enum et Annotations
    Par Soulama dans le forum Langage
    Réponses: 6
    Dernier message: 07/07/2009, 15h28
  3. question sur enum System.Data.DbType
    Par ouadie99 dans le forum C#
    Réponses: 3
    Dernier message: 21/05/2008, 10h51
  4. Réponses: 2
    Dernier message: 11/08/2002, 21h27
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

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