#include
using namespace std;
enum sexs{boy,girl};
class Date{
public:
Date(int a,int b,int c){
year=a;
month=b;
day=c;
}
private:
int year;
int month;
int day;
};
class People{
public:
input(){
cout<<"录入people信息"< cout cin>>number;
cout<<endl<<"性别:";
cin>>sex;
cout<<endl<<"出生日期:";
cin>>birthday;
cout<<endl<<"身份证号:";
cin>>id;
}
output(){
cout<<"人员信息:"<<endl;
cout<<"编号:"<<number<<endl<<"性别:"<<sex<<endl;
cout<<"出生日期:"<<birthday<<endl<<"身份证号:"<<id<<endl<<endl;
}
private:
int number;
sexs sex;
char birthday[20];
double id;
};
int main(int argc,char *argv[]){
People p1,p2,p3;
p1.input;
p2.input;
p3.input;
p1.output;
p2.output;
p3.output;
return 0;
}
这是因为std::cin操作符没有重载过enum类型。
解决方法1:用char或者int类型接收性别sex,再根据需要转换为enum类型。
解决方法2:重载cin操作符,代码如下:
istream & operator >> (istream &is, sexs &g)
{
int i;
is >> i;
if (i < boy || i > girl)
throw "Some Error";
else
g = (sexs)i;
return is;
}
注意:如果用方法2,终端输入时应该输入 0 或者 1,分别代表boy、girl。
如果对您有帮助,请采纳答案好吗,谢谢!