пытаюсь перегрузить оператор ++ для моего класса дат. по-прежнему получаю сообщение об ошибке: невозможно увеличить значение типа «Дата» - PullRequest
0 голосов
/ 08 мая 2018

Я написал класс Date, и я пытаюсь попрактиковаться в перегрузке операторов в этом классе.Я пытался перегрузить operator++, чтобы увеличить день на единицу, но я все еще получаю эту ошибку: не могу увеличить значение типа «Дата»!вот мой метод перегрузки этого оператора:

Date Date::operator++()
{
  day++;
  if (day > days_of_month(month, year)) {
    day = 1;
    month++;
    if (month > 12) {
      month = 1;
      year++;
    }
  }
  return *this;
}

, а это метод days_of_month:

int days_of_month(int m, int y)
{
  if (m < 7)
    return 31;
  else if (m < 12)
    return 30;
  else if (m == 12)
    return is_leap_year(y) ? 30 : 29;
  else
    abort();
}

1 Ответ

0 голосов
/ 08 мая 2018

Существует два типа приращения - постинкрементное и прединкрементное. То, что вы перегружаете, это последнее, и вы пытаетесь использовать первое.

Обычно вы предоставляете два для класса. Это выглядит так:

Date& Date::operator++() // for ++d
Date Date::operator++(int) // for d++
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...