一道c++静态成员和友元的问题 要求显示日期和时间

按下列要求编程
(1)定义日期类CDate,包含年、月、日三个int型私有数据成员;
(2)定义时间类CTime,包含时、分、秒三个int型数据成员,以及一个CDate型数据成员;在CTime中定义一个函数void display( )函数,用于显示日期和时间;
(3)为类CDate和CTime编写必要的成员函数和构造函数;
(4)定义CTime的成员函数display(),输出日期和时间;
(5)把CTime的成员函数display()改为友元函数,并测试之;
(6)编写函数main(),定义CTime的对象,测试其成员函数并截图运行结果。

#include<bits/stdc++.h>
using namespace std;
class CDate{
    private:
        int year;
        int month;
        int day;
    CDate()
    {
        year=2022;
        month=3,day=4;
    }
    CDate(int y,int m,int d)
    {
        year=y;
        month=m;
        day=d;
    }
    CDate(CDate& d)
    {
        year=d.year;
        month=d.month;
        day=d.day;
    }
    ~CDate() {}
    int Gety()
    {
        return year;   //得到年份
    }
    int Getm()
    {
        return month;
    }
    int Getd()
    {
        return day;
    }
    void Set(int y,int m,int d)
    {
        year=y;    //设置时间
        month=m;
        day=d;
    }
};
class CTime{
    public:
        int hour;
        int min;
        int sec;
 //怎么定义CDate型数据成员
    
    void display()//怎么改成友元函数捏 
    {
        cout<<year<<"-"<<month<<"-"<<day<<endl;   //CDate用了private怎么调用year month 和day呢 
    }
};
 
int main()
{
    
    Date d1,d2(1999,9,9);
    d1.display();
    d2.display();
    d1.Set(2016,1,1);
    d1.display();
    cout<<d1.Gety()<<"-"<<d1.Getm()<<"-"<<d1.Getd()<<endl;
    return 0;
}


只能这样写了 编译通过不了 实现要求更不会 求解答 谢谢大家!

编译报错信息贴出来看看
为什么想在CTime类里来输出年月日呢?是想CTime中包含CDate吗?那可以用友元类

#include<bits/stdc++.h>
using namespace std;
class CDate{
    private:
        int year;
        int month;
        int day;
    CDate()
    {
        year=2022;
        month=3,day=4;
    }
    CDate(int y,int m,int d)
    {
        year=y;
        month=m;
        day=d;
    }
    CDate(CDate& d)
    {
        year=d.year;
        month=d.month;
        day=d.day;
    }
    ~CDate() {}
    int Gety()
    {
        return year;   //得到年份
    }
    int Getm()
    {
        return month;
    }
    int Getd()
    {
        return day;
    }
    void Set(int y,int m,int d)
    {
        year=y;    //设置时间
        month=m;
        day=d;
    }
};
class CTime{
    friend class CDate;
    public:
        int hour;
        int min;
        int sec;
        CDate date;
        CTime(int y,int m,int d,int h ,int M,int s) : date(y,m,d) {hour = h;min = M;sec = s;}
    void display()//怎么改成友元函数捏 
    {
        cout<<date.year<<"-"<<date.month<<"-"<<date.day<<endl;   
        cout<<hour<<"-"<<min<<"-"<<sec<<endl;   
    }
};
 
int main()
{
    
    CTime t1(2022,2,21,10,38,29);
    t.display();
    return 0;
}
 
 

CDate 的get,set,构造都弄成public。
CTime 中 CDate cdate;
输出用cout << cdate.Gety();

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632