我是新来的。我有下一个遗产:
class Poster : public QObject
{
Q_OBJECT
}
class SyncPoster: public Poster
{
Q_OBJECT
private slots:
... some functions
}
class TextPoster : public Poster
{
Q_OBJECT
private slots:
... some functions
}但是装配抛出是错误的:
架构x86_64的未定义符号:"vtable for SyncPoster",引用于: SyncPoster::SyncPoster(Window*,QString const&,QString const&)中的sync_poster.o注释:缺少vtable通常意味着第一个非内联虚拟成员函数没有定义。ld:在体系结构x86_64中找不到符号
这是什么意思,我做错了什么?你有什么想法吗?
发布于 2016-01-30 20:13:21
此错误的一个常见情况是创建一个QObject派生类,并且在构建之前不调用qmake就添加或删除Q_OBJECT。
缺少对qmake的调用不会触发对文件的重新解析,如果您刚刚添加了Q_OBJECT,则moc将不会运行。
发布于 2016-01-30 18:28:54
来自类似的主题Why am I getting "Undefined symbols ... typeinfo ... vtable" with a virtual and concrete class?:
...You似乎混淆了定义和声明。您在基类中所拥有的只是没有定义的声明,即实现。您需要使它成为纯虚拟的,或者实现它,即使它只是一个空的{}.
检查构造函数的声明和定义。您的SyncPoster类有公共构造函数吗?有定义吗?(有身体吗?)
SyncPoster::SyncPoster(/*...*/)检查它是否有身体:
SyncPoster::SyncPoster(/*...*/) {}
//^^^ bodyhttps://stackoverflow.com/questions/35105401
复制相似问题