1

QObject と別のクラスを継承したいのですが、エラーが発生しました: `vtable for EduGraph' の未定義の参照です。それに関するいくつかのスレッドを読み、クラス定義で継承されたクラスのシーケンスを修正しましたが、問題は解決していません。問題。

class EduGraph : public QObject, public Graph<Vertex<ENode, EEdge>*> {
private:
    std::list<Vertex<ENode, EEdge>*>::iterator firstSel;
    std::list<Vertex<ENode, EEdge>*>::iterator secSel;
public:

Q_OBJECT

    EduGraph() : firstSel(0), secSel(0) {}
    ~EduGraph();

    void NewNode(const QPoint& p);
    void RemoveNode();
    void Associate();
    void Dissociate();

signals:
    void VertexSelected();
    void VertexDeSelected();
};
4

1 に答える 1

2
`Undefined reference to `vtable for...'` 

通常、実装されていない仮想関数の兆候です。基本クラスから継承した対応する仮想関数を実装 (定義) したことを確認してください。

たとえば、B の print メソッドが実装されていないため、同じエラーが発生します。

class A {
public:
    virtual void print() = 0;
};

class B : public A{
public:
    void print();
};

int main()
{
    B b;
}
于 2013-03-30T15:05:10.303 に答える