我想弄清楚一個有趣的多重繼承問題。C++多繼承 - 爲什麼你沒有工作?
的祖父母是一個接口類的多個方法:
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;}
};
我想用繼承父母雙方和類指定什麼方法應該通過使用指令來自哪裏:
class D : public B, public C
{
public:
using B::foo;
using C::bar;
};
當我嘗試實例化一個DI得到錯誤的嘗試實例化一個抽象類。
int main()
{
D d; //<-- Error cannot instantiate abstract class.
int test = d.foo();
int test2 = d.bar();
return 0;
}
有人能幫我理解這個問題以及如何最好地利用部分實現?
在菱形圖案中,您需要使用虛擬繼承。但我不相信這會自己解決你的問題。 – David 2011-05-03 02:35:09