读书人

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

发布时间: 2012-02-08 19:52:21 作者: rapoo

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继承就可以避免继承多个父类的问题

读书人网 >C++

热点推荐