【Qt】报错error: undefined reference to `vtable for的最简单解决

1、问题描述

编译Qt程序时,在某个类构造函数定义处报错:

error: undefined reference to `vtable for

2、原因分析

导致错误信息的原因是:子类没有实现父类的纯虚函数

在Qt中,首先要想到的是在一个类中添加了新的继承QObject,并添加了 Q_OBJECT 宏,然后执行构造或重新构造,都会造成这个错误。

根本原因是,只执行构造或重新构造,都不会编译新添加的宏Q_OBJECT。因此在这之前要执行qmake,让moc编译器去预编译Q_OBJECT,然后再执行构造,就不再报错了。

3、解决方法
首先重新执行qmake,然后再执行构造。平时使用这个方法也可以解决大多数bug

相关推荐
清灵xmf23 分钟前
为什么 Vue3 封装 Table 组件丢失 expose 方法呢?
开发语言·前端·javascript·封装·eltable
神仙别闹34 分钟前
基于JAVA实现的(GUI)坦克大战游戏
java·开发语言·游戏
凡人的AI工具箱44 分钟前
15分钟学 Go 第 54 天 :项目总结与经验分享
开发语言·人工智能·后端·算法·golang
小春学渗透1 小时前
DAY110代码审计-PHP框架开发篇&ThinkPHP&版本缺陷&不安全写法&路由访问&利用链
开发语言·安全·web安全·php
奈葵1 小时前
C语言字符函数和字符串函数
c语言·开发语言
robin_suli1 小时前
Java多线程八股(一), 锁策略,synchronized锁策略详解
java·开发语言·八股
手握风云-1 小时前
零基础Java第十八期:图书管理系统
java·开发语言
斗-匕1 小时前
Java 语言的强大特性
java·开发语言·python
夕泠爱吃糖1 小时前
什么是C++中的常量表达式?有什么用途?
开发语言·c++
AitTech2 小时前
JavaScript判断用户设备类型:PC端与移动端的区分方法
开发语言·javascript·ecmascript