关于C++运算符重载的问题。
题目:利用重载运算符求两个时间(时、分、秒)的和、差等运算。
我写了一个:可是老是说我的有一处错误,哪位高手过来看一下。
#include<iostream.h>
//using namespace std;
struct
{ int x,y,z;
} time1,time2,time3;
&operator++(struct &time,struct &time)
{ int x,y,z;
time3.x=time1.x+time2.x;
time3.y=time1.y+time2.y;
tine3.z=time1.z+time2.z;
z= time3.z;y= time3.y;x= time3.x;
time3.z%=60;
time3.y=(time3.y+z/60)%60;
time3.x=(time3.x+(y+z/60)/60)%24;
return time3;
}
int main ()
{
cout<<"please input the data1:"<<endl;
cin>>time1.x>>time1.y>>time1.z>>endl;
cout<<"please input the data2:"<<endl;
cin>>time2.x>>time2.y>>time2.z>>endl;
time3=time1++time2;
cout<<"the result is :"<<time3.x<<"/"<<time3.y<<"/"<<time3.z<<endl;
return 0;
}
[解决办法]
struct MyTime
{
public:
MyTime(int h = 0, int m = 0, int s = 0) : x(h), y(m), z(s){}
int x;
int y;
int z;
};
MyTime operator+(MyTime& time1, MyTime& time2)
{
int x , y, z;
z = time1.z + time2.z;
y = time1.y + time2.y;
x = time1.x + time2.x;
if (z >= 60)
{
y += z/60;
z %= 60;
}
if (y >= 60)
{
x += y/60;
y %= 60;
}
if (x >= 24)
{
x -= 24;
}
return MyTime(x, y, z);
}
int main ()
{
MyTime time1, time2, time3;
cout < < "please input the data1:" < <endl;
cin >> time1.x >> time1.y >> time1.z;
cout < < "please input the data2:" < <endl;
cin >> time2.x >>time2.y >>time2.z ;
time3 = time1 + time2;
cout < <"the result is :" < <time3.x < <"/" < < time3.y < <"/" < <time3.z < <endl;
return 0;
};
#include <iostream> using namespace std; struct Time {public: int x,y,z; }; Time operator+(Time& time1, Time& time2) { Time time3; int x,y,z; time3.x=time1.x+time2.x; time3.y=time1.y+time2.y; time3.z=time1.z+time2.z; z= time3.z;y= time3.y;x= time3.x; time3.z%=60; time3.y=(time3.y+z/60)%60; time3.x=(time3.x+(y+z/60)/60)%24; return time3; } int main () { Time time1,time2,time3; cout << "please input the data1:" << endl; cin >> time1.x >> time1.y >> time1.z; cout << "please input the data2:" << endl; cin >> time2.x >> time2.y >> time2.z; time3=time1+time2; cout << "the result is :" << time3.x << "/" << time3.y << "/" << time3.z << endl; return 0; }