使用运算符重载的日期操作..... [英] Date operation using operator overloading.....

查看:79
本文介绍了使用运算符重载的日期操作.....的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经编写了一个程序来执行日期操作,以便:

_____________________________________________________________________

假设:



日期d1( 19  6  2014  //   d1是带参数的对象 
日期d1 = d1- 1 ;
cout<< d1;



然后它应该打印18/06/2014



_______________________________________________________________________



但是我得到的错误是:从'int'转换为非标量类型`Date''



我试过但我无法得到......请帮忙....



_______________________________________________________________________

代码:

======



 # include   <   iostream  >  
使用 命名空间性病;
class 日期
{
int 天;
int 月;
int 年;
public
Date( int d, int m, int y)
{
day = d;
month = m;
年= y;
}

朋友 int 运算符 - (日期&, int );
朋友 int 运算符+(日期&, INT );
void display()
{
cout<< 日期:<< day<< - <<月<< - << year< ;< ENDL;
}
};
int operator - (日期& x, int y)
{
return x.day-y;
}
int 运算符+(日期& y, int z)
{
return y.day-z;
}
int main()
{
int dd,mm,yy;
cout<< 输入日期:;
cin>> dd;
cout<< 输入月份:;
cin>> mm;
cout<< 输入年份:;
cin>> yy;

日期d1(dd,mm,yy);
日期d2 = d1- 1 ;
d1.display();
日期d3 = d1 + 1;
d1.display();
return 0 ;
}

解决方案

问题在于运算符重载。您已声明返回类型为int,但您将其用作Date。 日期d2 = d1-1 。以下是帮助您理解问题的方法。



日期 operator   - (日期& x, int  y)
{

return 日期(x.day-y,x.month,x.year);

}


代码:

  #include   <   iostream  >  
使用 namespace std;
class 日期
{
int 天;
int 月;
int 年;
public
Date( int d, int m, int y)
{
day = d;
month = m;
年= y;
}

朋友日期运算符 - (日期&, int );
朋友日期运算符 +(日期&, INT );
void display()
{
cout<< 日期:<< day<< - <<月<< - << year< ;< ENDL;
}
};
日期运算符 - (日期& x, int y)
{
return 日期(x.day-y,x.month,x.year);
}
日期运算符+(日期& x, int y)
{
返回日期(x.day + y,x.month,x.year);
}
int main()
{
int dd,mm,yy;
cout<< 输入日期:;
cin>> dd;
cout<< 输入月份:;
cin>> mm;
cout<< 输入年份:;
cin>> yy;

日期d1(dd,mm,yy);
日期d2 = d1- 1 ;
d2.display();
日期d3 = d1 + 1;
d3.display();
return 0 ;
}





样本执行I / O:

输入日:20 
输入月份:6
输入年份:2014
日期:19-6-2014
日期:21-6-2014


I have written a program to perform operation on date such that:
_____________________________________________________________________
Suppose:

Date d1(19,6,2014) //d1 is object with arguments
Date d1=d1-1;
cout<<d1;


then it should print 18/06/2014

_______________________________________________________________________

But I am getting en error that : " conversion from `int' to non-scalar type `Date' requested "

I have tried but i could not get...please help....

_______________________________________________________________________
Code:
======

#include<iostream>
using namespace std;
class Date
{
      int day;
      int month;
      int year;
      public:
             Date(int d,int m,int y)
             {
                   day=d;
                   month=m;
                   year=y;
             }
             
             friend int operator-(Date &,int);
             friend int operator+(Date &,int);
             void display()
             {
                  cout<<"Date:"<<day<<"-"<<month<<"-"<<year<<endl;
             }
};
int operator-(Date &x,int y)
{
     return x.day-y;
}
int operator+(Date &y,int z)
{
     return y.day-z;
}
int main()
{
    int dd,mm,yy;
    cout<<"Enter Day:";
    cin>>dd;
    cout<<"Enter Month:";
    cin>>mm;
    cout<<"Enter Year:";
    cin>>yy;
    
    Date d1(dd,mm,yy);
    Date d2=d1-1;
    d1.display();
    Date d3=d1+1;
    d1.display();
    return 0;
}

解决方案

The problem is in your Operator Overloading. You have declared return type int but you are using it as Date. Date d2=d1-1. Below is a way to help you understand the problem.

Date operator-(Date &x,int y)
{

return Date(x.day-y, x.month, x.year);

}


code:

#include<iostream>
using namespace std;
class Date
{
      int day;
      int month;
      int year;
      public:
             Date(int d,int m,int y)
             {
                   day=d;
                   month=m;
                   year=y;
             }

             friend Date operator -(Date &,int);
             friend Date operator +(Date &,int);
             void display()
             {
                  cout<<"Date:"<<day<<"-"<<month<<"-"<<year<<endl;
             }
};
Date operator-(Date &x,int y)
{
     return Date(x.day-y, x.month, x.year);
}
Date operator+(Date &x,int y)
{
     return Date(x.day+y, x.month, x.year);
}
int main()
{
    int dd,mm,yy;
    cout<<"Enter Day:";
    cin>>dd;
    cout<<"Enter Month:";
    cin>>mm;
    cout<<"Enter Year:";
    cin>>yy;

    Date d1(dd,mm,yy);
    Date d2=d1-1;
    d2.display();
    Date d3=d1+1;
    d3.display();
    return 0;
}



sample execution I/O:

Enter Day:20
Enter Month:6
Enter Year:2014
Date:19-6-2014
Date:21-6-2014


这篇关于使用运算符重载的日期操作.....的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆