我有多重繼承的問題。C++中的多重繼承(Qt示例)
我想要一個類IEdge來實現QGraphicsItem「接口」,它包含了boundindRect()和paint(...)抽象方法。 IEdge還添加了一些新的方法。
class IEdge : public QGraphicsItem
{
public:
virtual Vertex * getVertex1() = 0;
virtual Vertex * getVertex2() = 0;
}
現在我想創建UndirectedEdge,延伸IEdge,但我不想由我自己來實現boundingRect()和paint(...),我想使用IQGraphicsLineItem實施。
class UndirectedEdge : public IEdge, public IGraphicsLineItem
{
public:
virtual Vertex* getVertex1();
virtual Vertex* getVertex2();
}
但是,這並不工作,編譯器說,UndirectedEdge是抽象的,因爲boundingRect()和paint(...)沒有實現(但我敢肯定的是,IGraphicsLineItem包含這些方法)。我不知道,爲什麼它不起作用。非常感謝你的解釋。
編輯:
我能解決這個問題,但我只是好奇。在我的主要語言的C#它會工作,我錯過了一些重要的繼承在C + + :-(一些提示,將不勝感激,謝謝
感謝您的解決方案,但我只是好奇,爲什麼它不工作。我確信它會在C#中完美工作:)我錯過了C++中的繼承關係:-( – bidacek 2013-03-13 00:20:34
編譯器知道IEdge :: boundingRect()和IGraphicsLineItem :: boundingRect()之間的區別......它們不是即使部分簽名拼寫相同,也是如此。 – Bill 2013-03-13 16:35:30