C++类的问题,请问怎么改,哪儿错了

图片说明#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。

如果对您有帮助,请采纳答案好吗,谢谢!