eer*_*ika 1 c++ oop inheritance interface
考虑以下层次结构
class Interface {
public:
virtual void foo() = 0;
};
class SubInterface: public Interface {
public:
virtual void bar() = 0;
};
class Base: public Interface {
public:
void foo() {};
};
class Impl: public SubInterface, public Base {
public:
void bar() {};
};
Run Code Online (Sandbox Code Playgroud)
下面是一个模拟如何使用这些类的示例:
int main() {
SubInterface* view1 = new Impl(); // Error! Interface::foo() is pure virtual within Impl
view1->foo();
view1->bar();
Interface* view2 = view1;
view2->foo();
}
Run Code Online (Sandbox Code Playgroud)
为什么编译器看不到那个继承自哪个Interface::foo()
实现?Base
Impl
我想,我可以实现foo()
在Impl
明确和委托调用Base
是这样的:
class Impl: public SubInterface, public Base {
public:
void foo() {
Base::foo();
}
void bar() {};
};
Run Code Online (Sandbox Code Playgroud)
但是,对于实现子接口的所有类,我必须这样做,所以这种方式并不完全理想.有更好的解决方案吗?
归档时间: |
|
查看次数: |
220 次 |
最近记录: |