首页 > 解决方案 > 试图为我的日期类重载运算符 ++。仍然收到错误:无法增加“日期”类型的值

问题描述

我写了一个 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();
}

标签: c++oopoperator-overloading

解决方案


增量有两种类型——后增量和前增量。您重载的是后者,而您正在尝试使用前者。

通常你为一堂课提供这两个。它看起来像这样:

Date& Date::operator++() // for ++d
Date Date::operator++(int) // for d++

推荐阅读