骑猪小道士 2019-05-22 00:32 采纳率: 50%
浏览 216

希望大佬帮我解决一下这个问题不是太懂


#include <iostream>
#include <string.h>

using namespace std;
class birthday;
class People
{
public:
    class birthday//people中birthday类的聚集
    {
        public:
        birthday(int y=0,int m=0,int d=0)//构造函数初始化
        {
            year=y;
            month=m;
            day=d;
        }
        birthday(birthday&b)//复制构造函数
        {
            year=b.year;
            month=b.month;
            day=b.day;
        }
        void setbirthday()//生日信息的设置
        {
            int yy,mm,dd;
            cout<<"请输入生日"<<endl;
            cin>>yy>>mm>>dd;
            year=yy;
            month=mm;
            day=dd;
        }
        inline void showbirthday()//生日信息的展示
        {
        cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl;
        }
        ~birthday(){};
        private:
        int year,month,day;
    };
    void showIF();//显示员工的信息
    People(birthday BD,char num[]=" ",char idnum[]=" ",char sx[]=" ",char nm[]=" ")//初始化people
    {
        Birthday=BD;
        strcpy(name,nm);
        strcpy(id,idnum);
        strcpy(sex,sx);
        strcpy(number,num);
    }
    People();
     People(People&p):Birthday(p.Birthday)
     {
            strcpy(name,p.name);
            strcpy(number,p.number);
            Birthday=p.Birthday;
            strcpy(sex,p.sex);
            strcpy(id,p.id);
     }
    ~People(){};
private:
    char name[11];
    char number[7];
    char sex[3];
    char id[16];
    birthday Birthday;

};
inline void People::showIF()//展示信息,可能会多次使用设置为内联函数
{
    cout<<"该员工信息如下:"<<endl;
    cout<<"name    number    sex(m/w)    id    birthday"<<endl;
    cout<<"        "<<name<<"  "<<number<<"        "<<sex<<"       "<<id<<"  ";
    Birthday.showbirthday();
}
int main()
{
    People p5[5];
    char num1[7],id1[16],sex1[3],name1[11];
    for(int i=0;i<5;i++)
    {
        People.birthday b1;
        b1.setbirthday();
        cout<<"请输入员工的name:";
        cin>>name1;
        cout<<"请输入员工的number:";
        cin>>num1;
        cout<<"请输入员工的sex(w为女性,m为男性):";
        cin>>sex1;
        cout<<"请输入员工的id:";
        cin>>id1;
        People p[i](b1,num1,id1,sex1,name1);//对P1对象进行初始化
    }
    for(int i=0;i<5;i++)
    p5[i].showIF();
    return 0;
}

主要是     People.birthday b1; 这一行报错 我是整体都不太清晰 想请问一下大佬们怎么改
  • 写回答

1条回答

  • threenewbee 2019-05-22 08:57
    关注

    是对象聚合不是类聚合,C++不是Java,不支持类聚合

    #include <iostream>
    #include <string.h>
    
    using namespace std;
    
    class birthday//people中birthday类的聚集
    {
        public:
        birthday(int y=0,int m=0,int d=0)//构造函数初始化
        {
            year=y;
            month=m;
            day=d;
        }
        birthday(birthday&b)//复制构造函数
        {
            year=b.year;
            month=b.month;
            day=b.day;
        }
        void setbirthday()//生日信息的设置
        {
            int yy,mm,dd;
            cout<<"请输入生日"<<endl;
            cin>>yy>>mm>>dd;
            year=yy;
            month=mm;
            day=dd;
        }
        inline void showbirthday()//生日信息的展示
        {
            cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl;
        }
        ~birthday(){};
        private:
        int year,month,day;
    };
    class People
    {
    public:
        void showIF();//显示员工的信息
        People(birthday BD,char num[]=" ",char idnum[]=" ",char sx[]=" ",char nm[]=" ")//初始化people
        {
            Birthday=BD;
            strcpy(name,nm);
            strcpy(id,idnum);
            strcpy(sex,sx);
            strcpy(number,num);
        }
        People() {};
         People(People&p):Birthday(p.Birthday)
         {
                strcpy(name,p.name);
                strcpy(number,p.number);
                Birthday=p.Birthday;
                strcpy(sex,p.sex);
                strcpy(id,p.id);
         }
        ~People(){};
    private:
        char name[11];
        char number[7];
        char sex[3];
        char id[16];
        birthday Birthday;
    
    };
    inline void People::showIF()//展示信息,可能会多次使用设置为内联函数
    {
        cout<<"该员工信息如下:"<<endl;
        cout<<"name    number    sex(m/w)    id    birthday"<<endl;
        cout<<"        "<<name<<"  "<<number<<"        "<<sex<<"       "<<id<<"  ";
        Birthday.showbirthday();
    }
    int main()
    {
        People p5[5];
        char num1[7],id1[16],sex1[3],name1[11];
        for(int i=0;i<5;i++)
        {
            birthday b1;
            b1.setbirthday();
            cout<<"请输入员工的name:";
            cin>>name1;
            cout<<"请输入员工的number:";
            cin>>num1;
            cout<<"请输入员工的sex(w为女性,m为男性):";
            cin>>sex1;
            cout<<"请输入员工的id:";
            cin>>id1;
            People p(b1,num1,id1,sex1,name1);//对P1对象进行初始化
            p5[i] = p;
        }
        for(int i=0;i<5;i++)
        p5[i].showIF();
        return 0;
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥20 蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏