QObject的多重继承

Multiple inheritance with QObject

本文关键字:多重继承 QObject      更新时间:2023-10-16

我想继承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();
};
`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;
}