我有多重继承的问题。
我想要一个 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++ 继承的重要内容:-( ...一些提示将不胜感激,谢谢。