从继承的类中实现抽象方法
Implement abstract methods from inherited class
我正在尝试做一些以前从未真正做过的事情。我基本上有三节课。类A是一个具有纯虚拟方法的抽象类,类B本身就是一个包含与类A中的虚拟方法同名的方法的类。下面的示例是我的代码的一个非常简化的版本。
class A {
virtual int methodA() = 0;
virtual int methodB() = 0;
virtual int methodC() = 0;
};
class B { //B implements A.A() and A.B()
int methodA() { return 0; };
int methodB() { return 0; };
};
class C : A, B {
int methodC() { return 0; }; //C implements A.C()
};
我可以编译类C,但当我尝试构造C new C()
的类时,我收到一条编译器消息,说"由于以下成员,无法实例化抽象类:int methodA()':is abstract"。
有没有一种方法可以通过C类中的多重继承来使用B类实现a类?
编辑:我们的愿望是保持B级混凝土。
您可以使用一些逐个方法的样板文件来完成。
class A {
public:
virtual int methodA() = 0;
virtual int methodB() = 0;
virtual int methodC() = 0;
};
class B { //B implements A.A() and A.B()
public:
int methodA() { return 0; };
int methodB() { return 0; };
};
class C : public A, public B {
public:
int methodA() { return B::methodA(); }
int methodB() { return B::methodB(); }
int methodC() { return 0; }; //C implements A.C()
};
演示:http://ideone.com/XDKDW9
相关文章:
- CMake + Qt,moc 编译失败,无法实现 QMetaObject 方法(编译器找不到基本 ui 对象的标头?
- 我们可以在没有新实例化的情况下声明一个抽象方法来返回抽象超类中的子类对象吗
- 将非类库分离为标头和实现的方法
- C++ 多重继承:使用基类 A 的实现实现基类 B 的抽象方法
- c++ 中的抽象方法是否曾经调用过?
- 调用没有主体的未实现静态方法
- enable_if在类声明之外实现的方法专用化
- 实现虚拟方法的组合行为
- 在C 11或更高版本中,是否可以通过Lambda来实现单方法纯Virtual C 接口
- 在没有 const 强制转换的链表中实现高级方法
- CUDA:共享内存的超载以用多个数组实现还原方法
- 强制派生的类实现私人方法
- 从继承的类中实现抽象方法
- 在超类中调用抽象方法,并在C++中的子类中实现它
- 为不同的形状实现抽象的"重叠"方法?
- 类在c++中仍然是抽象的,即使模板类实现了抽象方法
- 如何在可变上下文中使用抽象类时实现抽象方法
- c++实现的抽象方法不尽如人意
- 基类中抽象方法的包装器实现
- 如何在c++中实现抽象类,同时允许子类方法调用