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

C++设计模式的,(接口继承有关问题)

2012-02-08 
C++设计模式的高手进,(接口继承问题)一个接口(IA)定义了人。学生继承于IA。学生接口(IB)派生于人的接口,并定

C++设计模式的高手进,(接口继承问题)
一个接口(IA)定义了人。学生继承于IA。
学生接口(IB)派生于人的接口,并定义了上学等方法。学生继承与IB。

于是设计了如下方法实现。但C++似乎不管IB继承与IA,它会重新制造个虚表来存放IB。我设计的不对么?请大家多多指教。

class   IA{
public:
virtual   void   work()   =   0;
};

class   IB   :   public   IA{
public:
virtual   void   study()   =   0;
};

class   A   :   public   IA
{
public:
void   work(){
cout < < "work ";
}
};

class   B   :   public   A,   public   IB
{
public:
void   study(){
cout < < "study ";
}
};

[解决办法]
写错了。
让A和IB都从IA进行虚拟继承。

virtual inheritance正就被设计用来解决你的问题的。
[解决办法]
virtual inheritance
[解决办法]
如楼上所说,用virtual继承就可以避免继承多个父类的问题

热点排行