首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个c++程序的异常

2012-04-06 
一个c++程序的错误#include iostreamusing namespace stdclass Date{public:Date()void dinput(Date a

一个c++程序的错误
#include "iostream"
using namespace std;

class Date
{
public:
Date();
void dinput(Date a)
{
int ye,mo,da;
cin>>ye>>mo>>da;
}
Date(int ye,int mo,int da);
~Date(){};

void doutput()
{
cout<<a.year<<a.month<<a.day;
}
Date(Date &a);
private:
int year;
int month;
int day;
}
Date::Date(int ye,int mo,int da)
{
year=ye;
month=mo;
day=da;
}
Date::Date(Date &a)
{
year=a.year;
month=a.month;
day=a.month;
}
class Personnel
{
public:
Personnel();
Personnel(Date da)
{
a=da;
}
Personnel(char se,long Id,int nu=2011001);
~Personnel(){};
Personnel(Personnel &q);
void input();
void output()
{
cout<<endl;
cout<<"number "<<"sex "<<"data "<<"ID "<<endl;
cout<<numbers<<sex<<a.doutput()<<ID<<endl;
}
private:
int numbers;
Date a;
char sex;
long ID;
};
Personnel::Personnel(char se,long Id,int nu=2011001)
{
numbers=nu;
sex=se;
ID=Id;
}

Personnel::Personnel(Personnel &q)
{
numbers=q.numbers;
sex=q.sex;
ID=q.ID;
}
inline void Personnel::input()
{
//cout<<"请输入编号:"<<endl;
//cin>>numbers;
cout<<"请输入性别:"<<endl;
cin>>sex;
  cout<<"请输入出生日期:"<<endl;
a.dinput(a);
cout<<"请输入身份证号码:"<<endl;
  cin>>ID;
}



int main()
{
Date da,db;
Personnel pa(da),pb;

pa.input();
pa.output();
pb=pa;
db=da;
pb.input();
pb.output();


return 0;
}
运行的时候有几个错误,各位大侠指教下

[解决办法]
是什么错误把错误信息一并贴出来方便解答
[解决办法]
Personnel类没有重载=操作符,所以Personnel的对象不能用等号赋值。
[解决办法]
楼主自己看下吧。
之帮你纠正一些语法错误。
思路自己理吧。

C/C++ code
#include "iostream"using namespace std;class Date{public:    Date();    void dinput(Date a)    {        int ye,mo,da;        cin>>ye>>mo>>da;    }    Date(int ye,int mo,int da);    ~Date(){};    void doutput(Date a)    //1--> 添加声明    {        cout<<a.year<<a.month<<a.day;//没有对应的变量声明    }    /************************************************************************    或者是想输出成员应该这样    void doutput()    {    cout<<year<<"-"<<month<<"-"<<day<<endl;//没有对应的变量声明    }    ************************************************************************/    Date(Date &a);private:    int year;    int month;    int day;}; // 2 --> 没有 ;Date::Date(int ye,int mo,int da){    year=ye;    month=mo;    day=da;}Date::Date(Date &a){    year=a.year;    month=a.month;    day=a.month;}Date::Date()    //3 --> 类中既然声明了Data()就顺便写下实现吧{}class Personnel{public:    Personnel();    Personnel(Date da)    {        a=da;    }    Personnel(char se,long Id,int nu=2011001);    ~Personnel(){};    Personnel(Personnel &q);    void input();    void output()    {        cout<<endl;        cout<<"number "<<"sex "<<"data "<<"ID "<<endl;        //cout<<numbers<<sex<<a.doutput()<<ID<<endl; //a.doutput() 没有返回值,如何输出?    }private:    int numbers;    Date a;    char sex;    long ID;};Personnel::Personnel(char se,long Id,int nu /*=2011001*/)    // 4 --> 实现的时候不用带默认值,声明的时候带上就可以了{    numbers=nu;    sex=se;    ID=Id;}Personnel::Personnel(Personnel &q){    numbers=q.numbers;    sex=q.sex;    ID=q.ID;}Personnel::Personnel()    // --> 同3{}inline void Personnel::input(){    //cout<<"请输入编号:"<<endl;    //cin>>numbers;    cout<<"请输入性别:"<<endl;    cin>>sex;    cout<<"请输入出生日期:"<<endl;    a.dinput(a);    cout<<"请输入身份证号码:"<<endl;    cin>>ID;}int main(){    Date da,db;    Personnel pa(da),pb;    pa.input();    pa.output();    pb=pa;    db=da;    pb.input();    pb.output();    return 0;} 


[解决办法]
#include "iostream"
using namespace std;

class Date
{
public:
Date();
void dinput(Date a)
{
int ye,mo,da;
cin>>ye>>mo>>da;
}
Date(int ye,int mo,int da);
~Date(){};

void doutput(Date a) //1--> 添加声明
{
cout<<a.year<<a.month<<a.day;//没有对应的变量声明
}
/************************************************************************
或者是想输出成员应该这样(我就是这样改的,一般的out和in简单函数都没有参数值,看清来清洁)
void doutput()
{
cout<<year<<"-"<<month<<"-"<<day<<endl;//没有对应的变量声明
}
************************************************************************/
Date(Date &a);
private:
int year;
int month;
int day;
}; // 2 --> 没有 ;
Date::Date(int ye,int mo,int da)
{
year=ye;
month=mo;
day=da;
}
Date::Date(Date &a)
{
year=a.year;
month=a.month;
day=a.month;
}
Date::Date() //3 --> 类中既然声明了Data()就顺便写下实现吧
{}
class Personnel
{
public:
Personnel();
Personnel(Date da)
{
a=da;
}
Personnel(char se,long Id,int nu=2011001);
~Personnel(){};
Personnel(Personnel &q);
void input();
void output()
{
cout<<endl;
cout<<"number "<<"sex "<<"data "<<"ID "<<endl;
cout<<numbers<<sex<<ID<<endl; //a.doutput() 没有返回值,如何输出?
a.doutput(); //这样就达到目的了。
}
private:
int numbers;
Date a;
char sex;
long ID;
};
Personnel::Personnel(char se,long Id,int nu /*=2011001*/) // 4 --> 实现的时候不用带默认值,声明的时候带上就可以了//我也不清楚为什么不能赋初值。反正书上没讲
{
numbers=nu;
sex=se;
ID=Id;
}

Personnel::Personnel(Personnel &q)
{
numbers=q.numbers;
sex=q.sex;
ID=q.ID;
}
Personnel::Personnel() // --> 同3
{}
inline void Personnel::input()
{
//cout<<"请输入编号:"<<endl;
//cin>>numbers;
cout<<"请输入性别:"<<endl;
cin>>sex;
cout<<"请输入出生日期:"<<endl;
a.dinput(a);
cout<<"请输入身份证号码:"<<endl;
cin>>ID;
}



int main()
{
Date da,db;
Personnel pa(da),pb;

pa.input();
pa.output();
pb=pa;
db=da;
pb.input();
pb.output();


return 0;
}

其他的修改跟上面一样....

热点排行