多重継承に問題があります。
クラスIEdgeに、boundindRect()およびpaint(...)抽象メソッドを含むQGraphicsItem「インターフェイス」を実装する必要があります。IEdgeは、いくつかの新しいメソッドも追加します。
class IEdge : public QGraphicsItem
{
public:
virtual Vertex * getVertex1() = 0;
virtual Vertex * getVertex2() = 0;
}
ここで、IEdgeを拡張するUndirectedEdgeを作成したいのですが、boundingRect()とpaint(...)を自分で実装したくないので、IQGraphicsLineItem実装を使用したいと思います。
class UndirectedEdge : public IEdge, public IGraphicsLineItem
{
public:
virtual Vertex* getVertex1();
virtual Vertex* getVertex2();
}
しかし、それは機能しません。コンパイラは、boundingRect()とpaint(...)が実装されていないため、UndirectedEdgeは抽象的であると言います(ただし、IGraphicsLineItemにはこれらのメソッドが含まれていると確信しています)。なぜそれが機能しないのか、私にはわかりません。説明ありがとうございます。
編集:
私はこれを解決することができますが、私は興味があります。私の第一言語C#ではそれは機能しますが、C++での継承について重要な何かが欠けています:-(...いくつかのヒントをいただければ幸いです。ありがとうございます。