一个c++程序的错误

原點 2012-03-17 04:04:05
#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;
}
运行的时候有几个错误,各位大侠指教下
...全文
149 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
三尺青萍 2012-03-17
  • 打赏
  • 举报
回复
#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;
}

其他的修改跟上面一样....
cobra_chen 2012-03-17
  • 打赏
  • 举报
回复
楼主自己看下吧。
之帮你纠正一些语法错误。
思路自己理吧。


#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;
}
原點 2012-03-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 furney 的回复:]

Personnel类没有重载=操作符,所以Personnel的对象不能用等号赋值。
[/Quote]
重载?
原點 2012-03-17
  • 打赏
  • 举报
回复
作业4-10.cpp
F:\软件\vc6.0\VC6CN\COMMON\MSDEV98\BIN\作业4-10.cpp(27) : error C2533: 'Date::Date' : constructors not allowed a return type
F:\软件\vc6.0\VC6CN\COMMON\MSDEV98\BIN\作业4-10.cpp(63) : error C2572: 'Personnel::Personnel' : redefinition of default parameter : parameter 3
F:\软件\vc6.0\VC6CN\COMMON\MSDEV98\BIN\作业4-10.cpp(46) : see declaration of 'Personnel::Personnel'
执行 cl.exe 时出错.
这是错误信息,那里错了?
Furney 2012-03-17
  • 打赏
  • 举报
回复
Personnel类没有重载=操作符,所以Personnel的对象不能用等号赋值。
Furney 2012-03-17
  • 打赏
  • 举报
回复
是什么错误把错误信息一并贴出来方便解答

64,660

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧