5,530
社区成员
发帖
与我相关
我的任务
分享
class Iemployee
{
virtual void Interpret()=0;//秘书能翻译
virtual void Carry()=0;//助理能拎包
virtual void Drive()=0;//司机能开车
virtual void Design()=0;//设计师能设计新产品
virtual void Record()=0;//员工在开会的时候都需要做记录
};
//--------------------------------------------------//
class Iemployee
{
public:
virtual void Work()=0;
};
//--------------------------------------------------//
class Secretary : public Iemployee
{
public:
void Interpret(){cout<<"帮助总经理翻译!"<<endl;}
void Carry(){cout<<"帮助总经理拿东西!"<<endl;}
void Work(){cout<<"秘书工作"<<endl;}
};
//--------------------------------------------------//
class Driver : public Iemployee
{
public:
void Drive(){cout<<"给总经理开车"<<endl;}
void Carry(){cout<<"帮助总经理拿东西!"<<endl;}
void Work(){cout<<"司机工作"<<endl;}
};
//--------------------------------------------------//
class Stylist : public Iemployee
{
public:
void Design(){cout<<"给公司设计新产品"<<endl;}
void Work(){cout<<"设计师工作"<<endl;}
};
//--------------------------------------------------//
class Boss
{
public:
void Negotiate(Iemployee *aIemployee);
void HoldMetting(Iemployee *aIemployee);
void InCompany(Iemployee *aIemployee);
};
void Boss::HoldMetting(Iemployee *aIemployee)
{
aIemployee->Work();
}
void Boss::Negotiate(Iemployee *aIemployee)
{
aIemployee->Work();
}
void Boss::InCompany(Iemployee *aIemployee)
{
aIemployee->Work();
}
//--------------------------------------------------//
void main()
{
Boss aBoss;
Iemployee *aIemployeeSecretary = new Secretary();
Iemployee *aIemployeeStylist = new Stylist();
Iemployee *aIemployeeDriver = new Driver();
aBoss.HoldMetting(aIemployeeSecretary);
//aIemployeeSecretary->Carry(); 具体的工作是否可以放在这里?但是我这里aIemployeeSecretary 已经变为Iemployee 类型,将没有Carry()成员函数,这个问题怎么解决?
aBoss.Negotiate(aIemployeeStylist);
aBoss.InCompany(aIemployeeDriver);
delete aIemployeeSecretary;
delete aIemployeeStylist;
delete aIemployeeDriver;
}
//--------------------------------------------------//
class Iemployee
{
};
//--------------------------------------------------//
class Secretary : public Iemployee
{
public:
void Interpret(){cout<<"帮助总经理翻译!"<<endl;}
void Carry(){cout<<"帮助总经理拿东西!"<<endl;}
};
//--------------------------------------------------//
class Driver : public Iemployee
{
public:
void Drive(){cout<<"给总经理开车"<<endl;}
void Carry(){cout<<"帮助总经理拿东西!"<<endl;}
};
//--------------------------------------------------//
class Stylist : public Iemployee
{
public:
void Design(){cout<<"给公司设计新产品"<<endl;}
};
//--------------------------------------------------//
class Boss
{
Iemployee *aIemployee;
public:
void Negotiate();
void HoldMetting();
void InCompany();
};
class Iemployee
{
virtual void Interpret()=0;//秘书能翻译
virtual void Carry()=0;//助理能拎包
virtual void Drive()=0;//司机能开车
virtual void Design()=0;//设计师能设计新产品
virtual void Record()=0;//员工在开会的时候都需要做记录
};
//--------------------------------------------------//
class Secretary : public Iemployee
{
public:
void Interpret(){cout<<"帮助总经理翻译!"<<endl;}
void Carry(){cout<<"帮助总经理拿东西!"<<endl;}
};
//--------------------------------------------------//
class Driver : public Iemployee
{
public:
void Drive(){cout<<"给总经理开车"<<endl;}
void Carry(){cout<<"帮助总经理拿东西!"<<endl;}
};
//--------------------------------------------------//
class Stylist : public Iemployee
{
public:
void Design(){cout<<"给公司设计新产品"<<endl;}
};
//--------------------------------------------------//
class Boss
{
Iemployee *aIemployee;
public:
void Negotiate();
void HoldMetting();
void InCompany();
};
void Boss::HoldMetting()
{
Secretary aSecretary;
aSecretary.Carry();
}
void Boss::Negotiate()
{
//aIemployee.Interpret();//让其访问继承类而非抽象类。
}
void Boss::InCompany()
{
aIemployee->Record();
}
//--------------------------------------------------//
void main()
{
Boss aBoss;
aBoss.HoldMetting();
aBoss.Negotiate();
aBoss.InCompany();
}
class Iemployee
{
virtual void Interpret()=0;//秘书能翻译
virtual void Carry()=0;//助理能拎包
virtual void Drive()=0;//司机能开车
virtual void Design()=0;//设计师能设计新产品
virtual void Record()=0;//员工在开会的时候都需要做记录
};
这样肯定是不行的
class manage:Iemployee
{
Iemployee ie;
};
但是这样是可以的
class manage:Iemployee
{
Iemployee *ie;
};