我需要将 Qt 遗留代码从 4.7 转换为 5.8,我在 Qt Creator 4.2.1 Clang 7.0(Apple) 64 位中出现编译错误
在 .cpp 文件中查找
bool queries::insert(const QString &tableName_, const QMap<QString, QVariant> &values_) const
.cpp 错误 ./src/classes/queries.cpp:283:15: error: out-of-line definition of 'insert' does not match any declaration in 'queries' Error pointing to 'insert'
查看头文件
bool insert(const QString &tableName_, const QMap<QString, QVariant> &values_) const;
.h 中的错误 ../src/classes/queries.h:157:64: error: use of undeclared identifier 'QVariant' 错误指向'QVariant>'
Found similar Stackoverflow query
好的...那么替代品是什么?
最佳答案
解析定义时,QVariant
是已知类型。但是当声明被解析时,QVariant
还不知道。因此,声明无效,编译器只能忽略它。
添加#include <QVariant>
到头文件来解决这个问题。
它坏了,因为一些 Qt 头文件过去包含 <QVariant>
,而你隐含地依赖于它。随着 Qt 的更新,这种相互依赖性被最小化,如果在独立的翻译单元中编译,头文件现在只包含使它们有效所需的最少内容。因此,您的损坏代码已暴露其错误。
关于c++ - 未声明的标识符 'QVariant' 将旧版 Qt 4 转换为 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42700400/