【发布时间】:2011-05-03 02:27:04
【问题描述】:
我正在尝试找出一个有趣的多重继承问题。
祖父是一个接口类,有多个方法:
class A
{
public:
virtual int foo() = 0;
virtual int bar() = 0;
};
还有一些抽象类正在部分完成这个接口。
class B : public A
{
public:
int foo() { return 0;}
};
class C : public A
{
public:
int bar() { return 1;}
};
我要使用的类继承自两个父类,并通过 using 指令指定应该来自哪里的方法:
class D : public B, public C
{
public:
using B::foo;
using C::bar;
};
当我尝试实例化 D 时,我在尝试实例化抽象类时遇到错误。
int main()
{
D d; //<-- Error cannot instantiate abstract class.
int test = d.foo();
int test2 = d.bar();
return 0;
}
谁能帮我理解这个问题以及如何最好地利用部分实现?
【问题讨论】:
-
在菱形图案中,您需要使用虚拟继承。但我不相信这会自行解决您的问题。
标签: c++ inheritance multiple-inheritance diamond-problem