读书人

继承派生改错解决方案

发布时间: 2012-04-14 17:14:21 作者: rapoo

继承,派生,改错
#include<iostream>
#include<cstring>
using namespace std;
class worker
{
public:
worker(char name[],int age)
{
strcpy(n,name);
a=age;
}
void disp(){cout<<n<<" "<<a<<endl;}
private:
char n[10];
int a;
};
class leader:virtual public worker
{
public:
leader(char section[],char position[],char name[],int age):n(name),a(age)
{
strcpy(s,section);
strcpy(p,position);
}
void disp1(){cout<<s<<" "<<p<<endl;}
private:
char s[20],p[20];
worker n[10],a;
};
class engineer:virtual public worker
{
public:
engineer(char major[],char title[],char name[],int age):n(name),a(age)
{
strcpy(m,major);
strcpy(t,title);
}
void disp2(){cout<<m<<" "<<t<<endl;}
private:
char m[20],t[20];
worker n[10],a;
};

class chairman:public engineer,public leader
{
public:
chairman(char pay,char section[],char position[],char major[],char title[],char name[],int age):n(name),a(age),s(section),p(position),m(major),t(title)
{
p1=pay;
}
void disp3()
{
disp();
disp1();
disp2();
cout<<p<<endl
}
private:
int p1;
worker n[10],a;
leader s[20],p[20];
engineer m[20],t[20];
};

void main()
{
chairman c(3000,"财务部","财务经理","财会","经理","长孙",39);
c.disp3();
}

[解决办法]

C/C++ code
#include<iostream>#include<cstring>using namespace std;class worker{public:    worker(char name[],int age)    {        strcpy(n,name);        a=age;    }    void disp(){cout<<n<<" "<<a<<endl;}private:    char n[10];    int a;};class leader:virtual public worker{public:    leader(char section[],char position[],char name[],int age):worker(name,age)    {        strcpy(s,section);        strcpy(p,position);    }    void disp1(){cout<<s<<" "<<p<<endl;}private:    char s[20],p[20];//    worker n[10],a;};class engineer:virtual public worker{public:    engineer(char major[],char title[],char name[],int age):worker(name,age)    {        strcpy(m,major);        strcpy(t,title);    }    void disp2(){cout<<m<<" "<<t<<endl;}private:    char m[20],t[20];//    worker n[10],a;};class chairman:public engineer,public leader{public:    chairman(int pay,char section[],char position[],char major[],char title[],char name[],int age):engineer(major,title,name,age),leader(section,position,name,age),worker(name,age)    {        p1=pay;    }    void disp3()    {        disp();        disp1();        disp2();        cout<<p1<<endl;    }private:    int p1;//    worker n[10],a;//    leader s[20],p[20];//    engineer m[20],t[20];};void main(){    chairman c(3000,"财务部","财务经理","财会","经理","长孙",39);    c.disp3();} 

读书人网 >C++

热点推荐