题目大概是这样的:编辑一个人员管理类并对其测试
人员信息有姓名 ,生日,ID,家庭住址,性别
成员函数有构造函数,复制构造函数,输入输出;
主函数对所有成员函数进行测试。
但是在编译的时候遇到了一些小细节上的错误下面总结一下经验:
staff有个数据是生日date.birth,这个如果需要把他定义成struct结构体作为类的成员的话,结构体的对象是没有参数列表的,所以在构造函数初始化的时候就不能用初始化列表来初始化结构体的数据,应该在大括号里逐个的赋值。如果把它写成类作为类的成员,date类有对数据的初始化的构造函数就可以在staff的构造函数中用初始化列表来初始化date.
完整代码如下:
#include<iostream>
#include<cstring>
using namespace std;
struct Date
{int year;
int month;
int day;
//Date(int year1=0,int month1=0,int day1=0):year(year1),month(month1),day(day1){}
};
class staff
{
Date birth;
char name[20];
char id[20];
char sex[10];
char homeadd[30];
public:
staff(int y,int m,int d,char*pname,char*i,char *s,char*h)//:birth(y,m,d)
{
birth.year=y;birth.month=m;birth.day=d;
strcpy(name,pname);
strcpy(id,i);
strcpy(sex,s);
strcpy(homeadd,h);
}
staff(const staff&s)
{
strcpy(name,s.name);
strcpy(id,s.id);
strcpy(sex,s.sex);
strcpy(homeadd,s.homeadd);
}
void input();
void output();
};
void staff::input()
{ char pname[20],i[20],s[10],h[30];
int y,m,d;
cout<<"please input the name: ";cin>>pname;
cout<<"please input the id; ";cin>>i;
cout<<"the sex is; ";cin>>s;
cout<<"the homeadd is :";cin>>h;
strcpy(name,pname);
strcpy(id,i);
strcpy(sex,s);
strcpy(homeadd,h);
cout<<"the birthday of year,month and day:";
cin>>y>>m>>d;
birth.year=y;birth.month=m;birth.day=d;
}
void staff::output()
{
cout<<"name:"<<name<<"\tid: "<<id<<"\tsex: "<<sex<<"\tbirth: "<<birth.year<<"-"<<birth.month<<"-"<<birth.day;
cout<<"\thomeadd:"<<homeadd<<endl;
}
int main()
{
staff s(1998,11,24,"sun","123","w","jinan");
staff s2(s);
s2.input();
s2.output();
return 0;
}
//Date(int year1=0,int month1=0,int day1=0):year(year1),month(month1),day(day1){}
};
class staff
{
Date birth;
char name[20];
char id[20];
char sex[10];
char homeadd[30];
public:
staff(int y,int m,int d,char*pname,char*i,char *s,char*h)//:birth(y,m,d)
{
birth.year=y;birth.month=m;birth.day=d;
strcpy(name,pname);
strcpy(id,i);
strcpy(sex,s);
strcpy(homeadd,h);
}
staff(const staff&s)
{
strcpy(name,s.name);
strcpy(id,s.id);
strcpy(sex,s.sex);
strcpy(homeadd,s.homeadd);
}
void input();
void output();
};
void staff::input()
{ char pname[20],i[20],s[10],h[30];
int y,m,d;
cout<<"please input the name: ";cin>>pname;
cout<<"please input the id; ";cin>>i;
cout<<"the sex is; ";cin>>s;
cout<<"the homeadd is :";cin>>h;
strcpy(name,pname);
strcpy(id,i);
strcpy(sex,s);
strcpy(homeadd,h);
cout<<"the birthday of year,month and day:";
cin>>y>>m>>d;
birth.year=y;birth.month=m;birth.day=d;
}
void staff::output()
{
cout<<"name:"<<name<<"\tid: "<<id<<"\tsex: "<<sex<<"\tbirth: "<<birth.year<<"-"<<birth.month<<"-"<<birth.day;
cout<<"\thomeadd:"<<homeadd<<endl;
}
int main()
{
staff s(1998,11,24,"sun","123","w","jinan");
staff s2(s);
s2.input();
s2.output();
return 0;
}