一个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的对象不能用等号赋值。
[解决办法]
楼主自己看下吧。
之帮你纠正一些语法错误。
思路自己理吧。
#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;
}
其他的修改跟上面一样....