此代码运算符超载中的错误是什么?


#include <iostream>
using namespace std;
class date 
{
   int day,year,month;
   int add,subt;
   public:
   date ()
   {
      day = 17;
      year = 2019;
      month = 3;
      add = 0;
      subt = 0;     
   }    
   void recent_date ()
   {
    cout<<"Recent date   :    "<<day<<"/"<<month<<"/"<<year;
   }
   void adding ()
   {
    cout<<endl<<"How many days you want to go in a future  :   ";
    cin>>add;
   }
   date operator+()
   {
        date temp;
        temp = (day,month,year);
        day += temp.add;
        if (day > 31 && month == 1 || month == 3 || month == 5 || month == 7 || month == 8 ||month == 10 || month == 12)
           {
               temp.month++;
               day = temp.day - 31;
               year = temp.year;        
           }
           return temp;
   }
};
main ()
{
    date obj;
    obj.recent_date();
    obj.adding();
    obj=temp++;
    obj.recent_date();
}

我遇到了语法错误,并且该程序未运行。

我想通过接受用户输入来增加日期。但是,它不能正确运行。

任何人都可以为我解释此代码吗?

有关超载增量操作员的更多信息,请参见此页面。

简而言之,这四个操作员不同:

operator+(T) // addition
operator+()  // unary plus
operator++() // prefix increment (++x)
operator++(int) // postfix increment (x++)

您似乎想要超载的是Postfix增量。

感谢@benvoigt指出我跳过了Unary Plus。

您称为 temp++,但从未定义操作员这样做。

这使用 Postfix递增,看起来像这样:

date operator++(int)
{
   // ...
}

我的假设是您打算这样做,而不是date operator+()

根据mhhollomon的答案,您可能还希望超载其他一些操作员,以获得强大的接口。

最新更新