Intro :
Parfois on a besoin de combiner et de regrouper des paramètres d’une enum ensemble.
Prérequis :
– Comprendre l’essentiel de la logique booléenne
– Savoir ce qu’est une énumération en C++
Explications :
Par exemple, pour gérer les entrées clavier des touches SHIFT, CTRL, ALT, nous devons parfois les combiner afin d’effectuer une action spéciale dans une application.
On pourrait déclarer ces possibilités par l’énumération de la manière suivante :
enum KeyModifier
{
SHIFT,
CTRL,
ALT
};
Mais on aimerait les combiner avec l’opérateur booléen : | (le ou logique) de la façon suivante :
// Cette fonction reçoit deux champs d'une énumération combinés KeyInputReceiver(SHIFT | CTRL);
Cette combinaison représente le fait que l’on appuie en même temps sur la touche SHIFT et sur la touche CTRL.
Alors il est nécessaire, pour combiner ces derniers champs, de spécifier des valeurs d’une certaine façon à cette énumération :
enum KeyModifier
{
SHIFT = 0x01,
CTRL = 0x02,
ALT = 0x03
};
Ceci afin de nous permettre de faire des opérations binaires (bitwise) sur ces derniers champs.
Pour simplifier cette dernière déclaration, on utilisera cette macro suivante qui aidera à assigner, dans votre déclaration enum, les différents champs binaires (bit flag)
#define BIT(x) 1 << x
Mais que fait cette dernière macro ?
Elle remplace les champs de déclarations binaires de manière simple.
enum KeyModifier
{
SHIFT = BIT(1),
CTRL = BIT(2),
ALT = BIT(3)
};
Résumé :
Nous avons appris comment combiner plusieurs paramètres d’une énumération en C++.
Références :
– http://www.learncpp.com/cpp-tutorial/38-bitwise-operators/

