y******l 发帖数: 23 | 1 class IA { virtual void foo() = 0; }
class IB : public virtual IA
class SA: class IA
class SB : SA, IB
For "foo", SB needs to provide an implementation or it can use SA's ? | X****r 发帖数: 3557 | 2 No need.
【在 y******l 的大作中提到】 : class IA { virtual void foo() = 0; } : class IB : public virtual IA : class SA: class IA : class SB : SA, IB : For "foo", SB needs to provide an implementation or it can use SA's ?
| l**a 发帖数: 423 | 3 IA
^ ^
| |
| |
IB SA
^ ^
| |
SB
这个是典型的继承类问题。你既然在IA里面用 pure virtual, 你一定要implete.
SB 有两个路径引用IA, 这会产生2个IA 的 copy 编译会出错。
解决方法有2个,一个是你用 ::解决路径问题,例如你想通过IB 调用foo(),
IB::foo(), 或者SA::foo().
另一个办法你的code 已经有眉目了,就是用 virtual class 的方法。
class IB: public virtual IA{ |
|