运行后出现发送错误报告的窗口
#include<iostream>
#include<string>
using namespace std;
class Person{
protected:
char *name,*sex,*id;
int age;
float salary;
public:
virtual int getpay()=0;
virtual void print(){
cout<<"姓名:"<<name<<" "<<"性别:"<<sex<<" "<<"年龄:"<<age<<" "<<"编号:"<<id<<" "<<"工资:"<<salary<<endl;
}
Person(char *a,char *b,char *c,int d,float e){
strncpy(name,a,sizeof(name));
name[sizeof(name)-1]='\0';
strncpy(sex,b,sizeof(sex));
sex[sizeof(sex)-1]='\0';
strncpy(id,c,sizeof(id));
id[sizeof(id)-1]='\0';
age=d; salary=e;}
};
class Boss:public Person{
public:
int getpay(){
salary=150000;
return salary;}
Boss(char *a,char *b,char *c,int d,float e):Person(a,b,c,d,e){}
};
class Employee:public Person{
double prize;
public:
int getpay(){
salary+=prize;
return salary;}
Employee(char *a,char *b,char *c,int d,float e,float f):Person(a,b,c,d,e){
prize=f;}
};
class HourlyWorker:public Person{
double worktime;
public:
int getpay(){
salary*=worktime;
return salary;}
HourlyWorker(char *a,char *b,char *c,int d,float e,float f):Person(a,b,c,d,e){
worktime=f;}
};
class CommWorker:public Person{
double gain;
public:
int getpay(){salary=salary+gain*0.05;
return salary;}
CommWorker(char *a,char *b,char *c,int d,float e,float f):Person(a,b,c,d,e){
gain=f;}
};
void main(){
Boss a("半导体","男","000001",21,0.0);
a.getpay();
a.print();
Employee b("半导体","男","000002",22,1500,500);
b.getpay();
b.print();
HourlyWorker c("半导体","男","000003",23,1300,10);
c.getpay();
c.print();
CommWorker d("半导体","男","000004",24,1200,100);
d.getpay();
d.print();
}
……………………………………
以上是源程序,编译没有错误,但是在运行后就出现发送错误报告的窗口。
请高手指点一下。。。。。。。。。
先行谢过了………………
[解决办法]
using namespace std; class Person{ protected: char name[64],sex[8],id[64]; 姓名:半导体 性别:男 年龄:21 编号:000001 工资:150000姓名:半导体 性别:男 年龄:22 编号:000002 工资:2000姓名:半导体 性别:男 年龄:23 编号:000003 工资:13000姓名:半导体 性别:男 年龄:24 编号:000004 工资:1205Press any key to continue
[解决办法]
#include <iostream>
#include <string>
using namespace std;
class Person{
protected:
char name[100],sex[100],id[100];
int age;
float salary;
public:
virtual int getpay()=0;
virtual void print(){
cout <<"姓名:" <<name <<" " <<"性别:" <<sex <<" " <<"年龄:" <<age <<" " <<"编号:" <<id <<" " <<"工资:" <<salary <<endl;
}
Person(char *a,char *b,char *c,int d,float e){
strncpy(name,a,sizeof(name));
name[sizeof(name)-1]='\0';
strncpy(sex,b,sizeof(sex));
sex[sizeof(sex)-1]='\0';
strncpy(id,c,sizeof(id));
id[sizeof(id)-1]='\0';
age=d; salary=e;}
};
class Boss:public Person{
public:
int getpay(){
salary=150000;
return salary;}
Boss(char *a,char *b,char *c,int d,float e):Person(a,b,c,d,e){}
};
class Employee:public Person{
double prize;
public:
int getpay(){
salary+=prize;
return salary;}
Employee(char *a,char *b,char *c,int d,float e,float f):Person(a,b,c,d,e){
prize=f;}
};
class HourlyWorker:public Person{
double worktime;
public:
int getpay(){
salary*=worktime;
return salary;}
HourlyWorker(char *a,char *b,char *c,int d,float e,float f):Person(a,b,c,d,e){
worktime=f;}
};
class CommWorker:public Person{
double gain;
public:
int getpay(){salary=salary+gain*0.05;
return salary;}
CommWorker(char *a,char *b,char *c,int d,float e,float f):Person(a,b,c,d,e){
gain=f;}
};
void main(){
Boss a("半导体","男","000001",21,0.0);
a.getpay();
a.print();
Employee b("半导体","男","000002",22,1500,500);
b.getpay();
b.print();
HourlyWorker c("半导体","男","000003",23,1300,10);
c.getpay();
c.print();
CommWorker d("半导体","男","000004",24,1200,100);
d.getpay();
d.print();
}