C++设计模式的,(接口继承有关问题)
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继承就可以避免继承多个父类的问题
一个接口(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继承就可以避免继承多个父类的问题