我想继承QObject和另外一个类,报错: `EduGraph 的 vtable' 的 undefined reference 我已经阅读了一些关于它的线程并修复了类定义中继承类的顺序,但它没有解决问题。
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;
}
关于c++ - QObject 的多重继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15719940/