从继承的类实现抽象方法

时间:2013-08-22 19:45:37

标签: c++ abstract-class multiple-inheritance virtual-functions name-hiding

我正在尝试做一些我之前没有做过的事情。我基本上有3节课。 A类是一个带有纯虚方法的抽象类,B类是它自己的一个类,它包含与A类中的虚方法同名的方法。我试图将所有内容绑定在C类中。我想要继承C(多继承)中的B和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级具体。

1 个答案:

答案 0 :(得分:0)

你可以用一些逐个方法的样板来做到这一点。

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