Enum
  1. #include <iostream>
  2.  
  3. enum Day {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday};
  4.  
  5. int main(int argc, char *argv[])
  6. {
  7. for(int i = Monday; i <= Sunday; i++)
  8. std::cout<<static_cast<Day>(i)<<std::endl;
  9.  
  10. for(Day d = Monday; d <= Sunday; d = static_cast<Day>(d+1))
  11. std::cout<<d<<std::endl;
  12.  
  13. return 0;
  14. }
Specify Integer Value for Enumerators
  1. #include <iostream>
  2.  
  3. enum Day {Monday = 1, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday};
  4.  
  5. int main(int argc, char *argv[])
  6. {
  7. for(int i = Monday; i <= Sunday; i++)
  8. std::cout<<static_cast<Day>(i)<<std::endl;
  9.  
  10. return 0;
  11. }
Compare Enumerator Values
  1. #include <iostream>
  2.  
  3. enum Day {Monday = 1, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday};
  4.  
  5. int main(int argc, char *argv[])
  6. {
  7. if(1 == Monday)
  8. std::cout<<"Compare integer with Day ..."<<std::endl;
  9.  
  10. if (Monday < Thursday)
  11. std::cout<<"Monday is earlier than Thursday ..."<<std::endl;
  12.  
  13. return 0;
  14. }
Enum ClassC++11
  1. #include <iostream>
  2.  
  3. int main(int argc, char *argv[])
  4. {
  5. enum Color {Blue, Red};
  6. enum Fruit {Banana, Orange};
  7.  
  8. //enum types are implicitly converted to integer, then they are compared
  9. if (Blue == Banana)
  10. std::cout<<"Blue equals to Banana ..."<<std::endl;
  11.  
  12. return 0;
  13. }
  1. #include <iostream>
  2.  
  3. int main(int argc, char *argv[])
  4. {
  5. enum class Color {Blue, Red};
  6. enum class Fruit {Banana, Orange};
  7.  
  8. //enum class types are not implicitly converted to integer
  9. //if (Color::Blue == Fruit::Banana)//compile error
  10. //std::cout<<"Blue equals to Banana ..."<<std::endl;
  11. Color c = Color::Blue;
  12. Fruit f = Fruit::Banana;
  13.  
  14. std::cout<<static_cast<int>(c)<<std::endl;
  15. std::cout<<static_cast<int>(f)<<std::endl;
  16.  
  17. return 0;
  18. }
Reference