#include <iostream>
using namespace std;
class time {
private :
int hour;
int minute;
int second;
public:
time();
time(int h, int m, int s);
time operator + (time t);
};
time::time() {
hour = minute = second = 0;
}
time::time(int h, int m, int s) {
hour = h;
minute = m;
second = h;
}
time time::operator+(time t) {
time sum;
int goon;
sum.second = second + t.second;
goon = sum.second / 60;
sum.second %= 60;
sum.minute = minute + t.minute + goon;
goon = sum.minute / 60;
sum.minute %= 60;
sum.hour = hour + t.hour + goon;
return sum;
}
ostream & operator << (ostream &out, time &t) {
out << t.hour << " : " << t.minute << " : " << t.second;
return out;
}
int main() {
int h1, h2, m1, m2, s1, s2;
cin >> h1 >> m1 >> s1;
cin >> h2 >> m2 >> s2;
time t1(h1, m1, s1), t2(h2, m2, s2);
cout << t1 + t2 << endl;
return 0;
}
问题出现在<<
的重载上。
ostream & operator << (ostream &out, time &t) {
out << t.hour << " : " << t.minute << " : " << t.second;
return out;
}
这段代码编译器提示我无法访问t.hour
,t.minute
和t.second
怎么修改使cout
中的<<
运算符能够支持输出time
类型?
以类似于24:45:12这种形式输出