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 :

Enum, namespace ou autre ?


Sujet :

Langage C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2018
    Messages : 4
    Points : 6
    Points
    6
    Par défaut Enum, namespace ou autre ?
    Bonjour à tous,

    J'ai besoin de votre avis pour réaliser un générateur de trame. Je souhaite quelque chose de très lisible et très guidé pour que n'importe qui puisse facilement créer sa trame.
    Pour faire simple, je pilote une interface utilisateur qui dispose de plusieurs LED RGB. j'ai plusieurs commandes et plusieurs paramètres déjà définis comme par exemple:

    COMMAND:
    - OUTPUT //manipuler une sortie
    - BRIGHTNESS //piloter le niveau de luminosité

    OUTPUT
    - O0 //sortie 0
    - O1 //sortie 1
    - O2 //sortie 2

    COLOR:
    - RED
    - ORANGE
    - WHITE

    Pour générer une trame, je souhaite créer des méthodes simples comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    setColor(OUTPUT op, COLOR c) //pilote la sortie op en couleur c
    {
        QByteArray message; //(j'utilise Qt)
     
        message.append(COMMAND::OUTPUT); //C'est une commande "pilotage de sortie"
        message.append(op);
        message.append(c);
        serial.write(message);
    }
    Ma question est en fait simple: quelle est la bonne méthode pour définir COMMAND, OUTPUT et COLOR (je ne nomme que ceux là mais j'en ai beaucoup d'autres) de manière à pouvoir les utiliser facilement dans les méthodes?

    En faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    enum COLOR{RED = 0x00, ORANGE= 0x01, WHITE= 0x02}
    Je ne peux pas faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    message.append(RED); //RED n'est pas un type
    En faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    namespace COLOR{
        const quint8 RED  = 0x00;
        const quint8 ORANGE= 0x01;
        const quint8 WHITE= 0x02;
    }
    Comment le mettre en paramètre de la méthode?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setColor(OUTPUT op, COLOR c) //Error: Unknown type name OUTPUT, Unknown type name COLOR
    Peut-être existe-t-il un autre moyen que je ne connais pas?
    J'attends toutes vos propositions, merci!

    Arnaud

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 071
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 071
    Points : 12 116
    Points
    12 116
    Par défaut
    J'attends toutes vos propositions, merci!
    Scoped enumerations
    https://en.cppreference.com/w/cpp/language/enum

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Namespace avec constantes c'est pas mal, mais le plus clair serait clairement un enum class.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2018
    Messages : 4
    Points : 6
    Points
    6
    Par défaut
    En effet, les enum class sont appropriés. Merci!

  5. #5
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par Bousk Voir le message
    Namespace avec constantes c'est pas mal, mais le plus clair serait clairement un enum class.
    +1
    Voire, namespace (parce qu'il est toujours préférable de placer ce que l'on crée dans un espace de noms particulier) + enum class (pour que les constances soient clairement mises en relation les une avec les autres)
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

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

Discussions similaires

  1. trop de Variables globales donc enums ou autre
    Par mimi31110 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 29/06/2008, 20h18
  2. passer d'une Enum à une autre
    Par TheBlackReverand dans le forum C#
    Réponses: 2
    Dernier message: 23/05/2008, 12h51
  3. element d'un enum + autre probleme
    Par nayaphykit dans le forum Langage
    Réponses: 6
    Dernier message: 02/04/2008, 09h47
  4. Creation d'un enum a partir d' un autre
    Par Seth77 dans le forum C#
    Réponses: 2
    Dernier message: 11/08/2007, 22h35
  5. ENUM dans une autre table
    Par sebas16_911 dans le forum Débuter
    Réponses: 1
    Dernier message: 06/04/2006, 17h38

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