类型转换构造函数求解

fxfxfxfxw fxfxfxfxw 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
#include<iostream>
using namespace std;
class Date
{
public:
Date(int _year = 1900, int _month = 1, int _day = 1)
{
year = _year;
month = _month;
day = _day;
}
void Show()
{
cout << year <<"/"<< month <<"/"<<day << endl;
}
int Getyear()
{
return year;
}
int Getmonth()
{
return month;
}
int Getday()
{
return day;
}
void setyear(int _year)
{
year = _year;
}
void setmonth(int _month)
{
month = _month;
}
void setday(int _day)
{
day = _day;
}
private:
int year,month,day;

};
class Time
{
public:
Time(int _hour = 0, int _minute = 0, int _second = 0)
{
hour= _hour;
minute = _minute;
second = _second;
}
Time(int x)//转换构造函数
{
minute = x/ 60;
hour = x / 60;
second = x - hour * 60 * 60 - minute * 60;
}
void Show()
{
cout << hour << ":" << minute << ":" << second << endl;
}
int Gethour()
{
return hour;
}
int Getminute()
{
return minute;
}
int Getsecond()
{
return second;
}
void sethour(int _hour)
{
hour = _hour;
}
void setminute(int _minute)
{
minute = _minute;
}
void setsecond(int _second)
{
second = _second;
}
private:
int hour, minute, second;
};
class DateTime
{
public:
DateTime(Date _d, Time _t)//形参为类的构造函数
{
d = _d;
t = _t;
}
DateTime(int year=1900,int month=1,int day=1,int hour=0,int minute=0,int second=0)
{
d.setyear(year);
d.setmonth(month);
d.setday(day);
t.sethour(hour);
t.setminute(minute);
t.setsecond(second);
}
void Show()
{
cout << d.Getyear() << "/" << d.Getmonth()<< "/" << d.Getday()<< " " << t.Gethour()<< ":" << t.Getminute()<< ":" << t.Getsecond()<<endl;
}
void AddSecond();
private:
Date d;
Time t;
};
void DateTime::AddSecond()
{
int year, month, day, hour, minute, second;
year = d.Getyear();
month = d.Getmonth();
day = d.Getday();
hour = t.Gethour();
minute = t.Getminute();
second = t.Getsecond();
second++;
if (second == 60) //时间
{
second = 0;
minute++;
if (minute == 60)

{
minute = 0;
hour++;
if (hour == 24)
{
hour = 0;
day++;
}
}
}
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) //每月有31天的
{
if (day == 31 + 1)
{
day = 1;
month++;
}
}
if (month == 4 || month == 6 || month == 9 || month == 11)//每月有30天的
{
if (day == 30 + 1)
{
day = 1;
month++;
}
}
if (month == 2)
{
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) //闰年
{
if (day == 29 + 1)
{
day = 1;
month++;
}
}
else //平年
{
if (day == 28 + 1)

{
day = 1;
month++;
}
}
}
if (month == 13)
{
month = 1;
}
d.setyear(year);
d.setmonth(month);
d.setday(day);
t.sethour(hour);
t.setminute(minute);
t.setsecond(second);
}
void main()
{
Date d(2016, 2, 29);
d.Show(); //显示:2016/02/29

Time t(23, 59, 59);
t.Show(); //显示:23:59:59

DateTime dt1(d, t);
dt1.Show(); //显示:2016/02/29 23:59:59
dt1.AddSecond(); //dt1的值改为增加1秒后的日期时间
dt1.Show(); //显示:2016/03/01 00:00:00

DateTime dt2; //默认构造函数
dt2.Show(); //显示:1900/01/01 00:00:00

DateTime dt3(1998, 3, 18, 13, 30, 0); //带参数构造函数
dt3.Show(); //显示:1998/03/18 13:30:00
t=1234; //类型转换,t得到一天中第1234秒的时间
t.Show(); //显示: 00:20:34
}

其他功能正常,请问为什么最后的t=1234的类型转就不行
...全文

相关推荐

评论 9
收藏 已收藏
分享
返回顶部
fxfxfxfxw
C++ 语言 65,214 成员 250,514 内容