Qt undefined reference to `vtable for * * * '

如题所述

第1个回答  2024-08-16
缘起:

在验证Qt connect在不同参数情况下,槽函数运行线程时,直接在main函数中编写代码,导致运行出现"undefined reference to 'vtable for * * * '"错误。查阅资料后,对这一问题有了一定了解。

代码示例如下:

此错误由C++标准引起,标准要求所有非纯虚函数必须被定义。GCC链接器在翻译单元中只会隐式定义构造函数、赋值运算符、析构函数和类的虚表。如若未定义这类特定方法,链接器可能会报告与之无关的符号定义缺失。

在Qt环境中,此问题的出现与元对象编译器(moc)有关。moc从头文件中读取程序,若类声明单独位于.h文件中,则可自动生成moc文件,避免上述问题。可通过手动生成.moc文件解决,此过程涉及Qt安装目录下moc.exe工具。

解决步骤如下:

1. 将类声明放在单独的.h文件中,使用moc生成新的C++文件。

2. 手动生成.moc文件,利用Qt安装目录下的moc.exe工具。

最终,通过调整代码结构,确保所有非纯虚函数被定义,问题得以解决。

通过以上总结,我们了解到在使用Qt进行开发时,应遵循C++标准和Qt扩展规则,尤其是类声明与实现的分离,确保所有必要函数被正确定义。这有助于避免链接时的错误,提升代码质量与程序稳定性。

生活认真,感悟深入,欢迎关注:Pou光明

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网