使用来自具体类的继承来实现纯虚拟方法C
Using inheritance from concrete class to implement pure virtual method C++
我想使用实现从接口实现纯虚拟方法由混凝土类提供,而无需从混凝土类中明确调用该方法。示例:
class InterfaceA{
public:
virtual void foo() = 0;
};
class InterfaceB:public InterfaceA{
public:
virtual void bar() = 0;
};
class ConcreteA : public InterfaceA{
public:
virtual void foo(){}//implements foo() from interface
};
class ConcreteAB: public InterfaceB, public ConcreteA{
public:
virtual void bar(){}//implements bar() from interface
};
在这种情况下,编译器要求在类Concreteab中实现FOO(),因为InterfaceB没有实现它并从Interfacea继承。
有一种方法可以告诉编译器使用Concretea的实现,而无需使用包装器呼叫Concretea :: foo()?
使InterfaceA
成为虚拟基类。
class InterfaceB : public virtual InterfaceA {
public:
virtual void bar() = 0;
};
class ConcreteA : public virtual InterfaceA {
public:
virtual void foo(){}//implements foo() from interface
};
您需要虚拟继承。
接口A,在层次结构的顶部,应实际上由所有立即子类继承。
class InterfaceB:public virtual InterfaceA{
public:
virtual void bar() = 0;
};
class ConcreteA : public virtual InterfaceA{
public:
virtual void foo(){}//implements foo() from interface
};
相关文章:
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 有没有比在库中添加一个并非由所有派生类实现的新虚拟函数更好的设计实践
- 如何在 C# 中实现C++虚拟纯类?
- 将C++子类成员函数(虚拟实现)传递给 C 类型函数指针
- 实现虚拟方法的组合行为
- 如何实现虚拟Inteface C
- 如何使用C 实现虚拟静态行为
- 允许其他基类实现虚拟函数
- 实现虚拟函数时对 vtable 的未定义引用
- 在 C++11 中实现虚拟方法条件
- 如何在c++中实现虚拟表
- 在没有虚拟关键字的情况下实现虚拟函数
- 如何在实现文件中实现虚拟方法
- 未实现虚拟功能
- 实现虚拟机C++的堆栈
- 在声明虚拟方法的父分支之外的其他父分支中实现虚拟方法
- C++在声明对象时可以实现虚拟方法吗
- 在继承中实现虚拟函数
- 从派生模板类中的基类重新实现虚拟函数
- 嵌入铬 - 实现虚拟功能C++