Перегрузка оператора для приращения enum

У меня есть это перечисление, и я просто хочу увеличить объект этого перечисления на одно место.

enum Month {
    january = 1,
    february,
    march,
    april,
    may,
    june,
    july,
    august,
    september,
    october,
    november,
    december
};

С объектом моего enum, Month m, я просто хочу переместить переменную объекта на одну позицию.

Month operator++(Month &m) {
        m = static_cast<Month>(m + 1);
        return m;
    }

С Месяцем &m в качестве параметра я получаю ошибку, что он должен принимать int в качестве аргумента. Поэтому, если я сделаю "(Month &m, int)", он скажет, что "должен принять либо ноль, либо один аргумент". Я прочитал, что вам не нужен Month &m, если перегрузка вашего оператора является функцией-членом, поэтому я удалил ее. После этого я получаю еще одну ошибку: "нет совпадения для" оператора ++ "(тип операнда" Месяц ")". Есть что-то, чего мне не хватает?

Основной код:

class Date {
    int y, d, month_end; // private
    Month m;

    public:
        Date(int yy, Month mm, int dd) 
        : y(yy), d(dd), m(mm) { 
        }

        Month& operator++(Month &m) { 
            m = static_cast<Month>(m + 1);
            return m;
        }

        void add_month() {
            ++m;
        }

1 ответ

Решение

В комментарии вы сказали:

Есть что-то, что я пропускаю? http://ideone.com/uOkSk0

Да. Вы определяете функцию в необычном месте - внутри определения Date, Это должна быть функция, не являющаяся членом.

использование пространства имен std;

enum Month {
   january = 1,
   february,
   march,
   april,
   may,
   june,
   july,
   august,
   september,
   october,
   november,
   december
};

Month& operator++(Month &m) {
   m = static_cast<Month>(m + 1);
   return m;
}

class Date {
   int y, d;
   Month m;

   public:
   Date(int yy, Month mm, int dd) // constructor
      : y(yy), d(dd), m(mm) { // member initializer
      }


   void add_month() {
      ++m;
   }
};

int main()
{
   Month m = january;
   ++m;
Другие вопросы по тегам