学海舟舟_林 2017-11-04 16:29 采纳率: 0%
浏览 709
已结题

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;

}

  • 写回答

1条回答 默认 最新

  • 战在春秋 2017-11-04 23:00
    关注

    这是因为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。

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

    评论

报告相同问题?

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?