c++组合类的应用,含有之前的类成员

本来有两个类,Date类和Time类现在要用创建一个组合类DateTime这样为啥不行?


#include 
using namespace std;
class Date
{
public:
    Date();
    bool isLeapYear(int year);
    int GetMonthDay(int year, int month);
    void ShowDate();
    void SetDate(int,int,int);
    ~Date(){cout<<"goodbye"<private:
    int _year;
    int _month;
    int _day;
};
class Time{
    public:
        Time();
        Time(int NewH,int NewM,int NewS);
        void ShowTime();
        void ShowTime(int i);
        void SetTime(int,int,int);
        ~Time(){cout<<"GoodBye!"<private:
    int Hour,Minute,Second;
        
};
Time::Time(int NewH,int NewM,int NewS){SetTime(NewH,NewM,NewS);
}
Time::Time(){SetTime(0,0,0);} 
void Time::ShowTime()
{
    cout<":"<":"<SetTime(int NewH,int NewM,int NewS){
    Hour=NewH<0||NewH>23?0:NewH;
    Minute=NewM<0||NewM>59?0:NewM;
    Second=NewS<0||NewS>59?0:NewS;
}

void Time::ShowTime(int i){
    cout<<(Hour>12?Hour-12:Hour)<<":"<<Minute<<":"<<Second;
    cout<<(Hour>12?"PM":"AM")<bool Date::isLeapYear(int year) {return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);}
int Date::GetMonthDay(int year, int month)
    {
        static int monthDayArray[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
        if (month == 2 && isLeapYear(year))
            return 29; 
        else
            return monthDayArray[month];
    }
void Date::ShowDate(){cout<<_year<<"-"<<_month<<"-"<<_day<Date::Date(){_year=_month=_day=0;
}
void Date::SetDate(int year , int month , int day ){if (year >= 1 && month <= 12 && month >= 1 && day <= GetMonthDay(year, month))
        {
            _year = year;
            _month = month;
            _day = day;
        }
        else{cout<<"日期输入有错"<class DateTime{
    public:
        DateTime(Time a,Time b,Time c,Date x,Date y,Date z);
        DateTime(DateTime&) ;
        void GetDateTime();
    private:    
        Time Hour,Minute,Second;
        Date _year,_month,_day;
}; 
DateTime::DateTime(Time Hour,Time Minute,Time Second,Date _year,Date _month,Date _day):Hour(a),Minute(b),Second(c),_year(x),_month(y),_day(z){
    
} 
DateTime::DateTime(Time Hour,Time Minute,Time Second,Date _year,Date _month,Date _day):Hour(a),Minute(b),Second(c),_year(x),_month(y),_day(z){
    cout<<_year<<"-"<<_month<<"_"<<_day<<" "<<Hour<<":"<<Minute<<":"<<Second<

DateTime::DateTime(Time Hour,Time Minute,Time Second,Date _year,Date _month,Date _day):Hour(a),
你自己看看啊,这Hour赋值的a天上掉下来的么?明明前面写的是Time Hour啊。

列表初始化的参数给的不对,
另外,你没有重载<<,无法直接cout<<Data类型数据。

img