首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

组合还是继承?解决方案

2012-04-06 
组合还是继承?class CIEye{virtual void See() 0}class CIEar{virtual void Hear() 0}如何定义Perso

组合还是继承?
class CIEye
{
  virtual void See() = 0;
}
class CIEar
{
  virtual void Hear() = 0;
}

如何定义Person
是应该
class Person:public CIEye,pubic CIEar
{

public:
virtual void SetEye(CIEye* eye) = 0;
virtual void SetEar(CIEar* ear) = 0;
private:
CIEye* m_MyEye;
CIEar* m_MyEar;
}

还是应该?
class CIPerson
{
public:
virtual void See() = 0;
virtual void Hear() = 0;

virtual void SetEye(CIEye* eye) = 0;
virtual void SetEar(CIEar* ear) = 0;
private:
CIEye* m_MyEye;
CIEar* m_MyEar;
}


看(see)听(hear)分别是眼睛和耳朵的功能,人有眼睛和耳朵,可以看和听。我认为人不应该继承于眼睛和耳朵,但如果不继承就必须把眼睛和耳朵的能力在人(person)的接口里重新描述,感觉有点罗嗦。
求指教
谢谢

[解决办法]
class CSomeBody:pulic CIPerson
{
///.....
}
CIPerson *p= new CSomeBody();

CEye peye=p.getEye();
peye.xx(); //some body look
CEar pear=p.getEar();
pear.xx(); //some body listen

热点排行