【发布时间】:2013-03-30 15:02:07
【问题描述】:
我想继承 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();
};
【问题讨论】:
-
您确定需要多重继承吗?从上面的代码来看,使用组合看起来会起作用(即在你的类中有一个
Graph<...>成员,而不是从它继承)。 -
重新运行 qmake 有帮助吗?此外,Q_OBJECT 宏在技术上应该位于类定义的私有部分中。通常,它是左花括号之后的第一件事。
标签: c++ qt polymorphism multiple-inheritance qobject