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

 .NET Discussion :

conversion directe int -> enum


Sujet :

.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 126
    Par défaut conversion directe int -> enum
    Bonjour,

    Dans mon programme C++/cli et C# j'utilise des énumérations pour clarifier mon code.
    Ma classe Line contient par exemple une énumération définissant le type de pointillé souhaité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    enum class dash_types : int 
    	{
    		FULL = 0,
    		DASH = 1,
    		DOT = 2,
    		DASH_DOT = 3,
    		DASH_DOT_DOT = 4,
    		RAIL = 5
    	};
    A plusieurs endroits de ma classe, j'ai des méthodes prenant comme argument un objet de type dash_types. (constructor, setter)
    Jusque là, rien de bien méchant mais je souhaite mémoriser mes objets Line en base de données et donc mes "dash_types" deviennent de simples "integer"

    Ceci me force à devoir convertir systématiquement les entiers lu en dash_type à la lecture et vis versa à l'écriture ...

    J'aurais bien voulu pouvoir passer en argument un entier à une méthode demandant un "dash_types" sans devoir ré-écrire la méthode et faire une conversion manuelle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Line l;
    l.set_dash(Line.dash_types.FULL);
    // serait équivalent à :
    int type = 0;
    l.set_dash(type); //où à terme, type serait récupéré dans la database
    Ma question est : est-ce possible et si oui, comment ?

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 126
    Par défaut
    j'ai découvert qu'a défaut d'avoir une écriture ultra simpliste je peux m'en sortir avec des casts explicites :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Line l;
    int type = 0;
    l.set_dash((dash_types)type);
    // ou encore :
    int type = (int)Line.dash_types.FULL;
    l.set_dash((dash_types)type);
    Étant plutôt fainéant, je me demande s'il y aurait un moyen de le faire sans cast. Finalement mon enum ayant été déclarée explicitement int (même si c'est le cas par défaut) c'est un peu bête de devoir caster un int en un int ...

  3. #3
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Tu aurai pu juste regarder l'aide ...
    Citation Envoyé par MSDN
    Le type sous-jacent spécifie le stockage alloué à chaque énumérateur. Toutefois, une conversion explicite doit être utilisée pour convertir un type enum en type intégral.
    http://msdn.microsoft.com/fr-fr/libr...8VS.80%29.aspx

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 126
    Par défaut
    j'avais cherché sur le forum comme sur la msdn et sur google mais trop d'info tue l'info parfois.

    ceci m'avait échappé, merci de l'info

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

Discussions similaires

  1. Fonctions de conversions (hexa->int & hexa->uint)
    Par MonsieurAk dans le forum C
    Réponses: 2
    Dernier message: 18/05/2006, 08h36
  2. conversion de int en chaine
    Par Midou dans le forum MFC
    Réponses: 4
    Dernier message: 19/02/2006, 14h15
  3. Conversion char/int à la lecture d'un fichier
    Par Gotterfdom dans le forum C++
    Réponses: 5
    Dernier message: 22/01/2006, 23h48
  4. [Conversion]convertir int[] en bytes[]
    Par tony_big_guy dans le forum Langage
    Réponses: 5
    Dernier message: 02/05/2005, 15h47
  5. [C++] Conversion de int en char* ou SetDlgItemText()
    Par lastcheper dans le forum MFC
    Réponses: 3
    Dernier message: 11/04/2005, 17h46

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