|

楼主 |
发表于 2014-4-29 22:35:15
|
显示全部楼层
sidfate 发表于 2014-4-29 09:53
把声明友元的部分去掉吧,没用。
void Printf3()
#include <iostream>
#include <string>
using namespace std;
class Base
{
string name;
int age;
public:
Base(string na,int ag):name(na),age(ag)
{}
void Printf()
{
cout<<"Base:"<<endl;
cout<<"name:"<<name<<endl;
cout<<"age:"<<age<<endl;
}
};
class Leader:virtual public Base
{
string job;
string depart;
public:
Leader(string jo,string de,string na,int ag):Base(na,ag)
{
job=jo;
depart=de;
}
void Printf()
{
Base::Printf();
cout<<"Leader:"<<endl;
cout<<"job:"<<job<<endl;
cout<<"depart:"<<depart<<endl;
}
};
class Engineer:virtual public Base
{
string profession;
string major;
public:
Engineer(string pro,string ma,string na,int ag):Base(na,ag)
{
profession=pro;
major=ma;
}
void Printf()
{
Base::Printf();
cout<<"Engineer:"<<endl;
cout<<"profession:"<<profession<<endl;
cout<<"major:"<<major<<endl;
}
};
class Chairman:public Leader,public Engineer
{
public:
Chairman(string pro,string ma,string jo,string de,string na,int ag):Base(na,ag),Leader(pro,ma,na,ag),Engineer(jo,de,na,ag)
{
}
void Printf()
{
Leader::Printf();
Engineer::Printf();
}
};
int main()
{
Engineer e1("职业","职务","李",20);
e1.Printf();
Leader l1("职称","部门","李",20);
l1.Printf();
return 0;
}
|
|