web-dev-qa-db-fra.com

Conversion du type de classe int en enum possible?

J'ai une situation en utilisant le langage c ++, où j'ai des valeurs entières de 1 à 7 pour l'entrée dans une méthode pour les jours de la semaine. Comme je peux facilement convertir le type de classe enum en entiers en utilisant staric_cast, mais la conversion d'un entier en une énumération est un peu problématique. La question soulevée est-il possible de convertir un nombre en type de classe enum? Parce que dans une autre méthode qui a généré un entier, il faudrait appeler la méthode basée sur l'entrée en semaine de la classe enum pour la mise à jour en semaine. Cette méthode de mise à jour prend uniquement le type de classe enum I.e enum classe en semaine {Monday = 1,. . Dimanche} La méthode est annulée updateWeekday (jour de semaine e). Quelqu'un peut-il m'aider avec cela s'il vous plaît?

7
A 786

Oui, vous pouvez convertir les deux façons: int en classe enum et classe enum en int . Cet exemple devrait être explicite:

enum class Color{Red = 1, Yellow = 2, Green = 3, Blue = 4};
std::cout << static_cast<int>(Color::Green) << std::endl; // 3
// more flexible static_cast - See Tony's comment below
std::cout << static_cast<std::underlying_type_t<Color>>(Color::Green) << std::endl; // 3
std::cout << (Color::Green == static_cast<Color>(3)) << std::endl; // 1
std::cout << (Color::Green == static_cast<Color>(2)) << std::endl; // 0

Vous pouvez l'essayer vous-même ici .

2
tangy