C++ Tutorial/Operator Overloading/enum operator

Материал из C\C++ эксперт
Перейти к: навигация, поиск

Overloading operators for enumerations

<source lang="cpp">#include <string>

  1. include <iostream>
  2. include <ostream>
  3. include <cstdlib>

enum Week { Monday=0, Tuesday=1, Wednesday=2, Friday=4 }; // Explicitly cast to int, to avoid infinite recursion. inline Week operator|(Week a, Week b) {

 return Week(int(a) | int(b));

} inline Week& operator|=(Week& a, Week b) {

 a = a | b;
 return a;

} inline Week operator&(Week a, Week b) {

 return Week(int(a) & int(b));

} inline Week& operator&=(Week& a, Week b) {

 a = a & b;
 return a;

} inline Week operator^(Week a, Week b) {

 return Week(int(a) ^ int(b));

} inline Week& operator^=(Week& a, Week b) {

 a = a ^ b;
 return a;

} inline Week operator~(Week a) {

 return Week(~int(a));

} bool error() {

 return std::rand()  2 != 0;

} int main() {

 Week a = Monday;
 std::cout << a << std::endl;
 a |= Tuesday;
 std::cout << a;

}</source>

0
1