3

我正在尝试做一些我以前没有真正做过的事情。我基本上有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 类具体。

4

1 回答 1

-1

您可以使用一些方法的样板来做到这一点。

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

于 2013-08-22T21:13:11.330 回答