c++ - 未声明的标识符 'QVariant' 将旧版 Qt 4 转换为 5

标签 c++ qt qvariant

我需要将 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' 错误指向'QV​​ariant>'

Found similar Stackoverflow query

好的...那么替代品是什么?

最佳答案

解析定义时,QVariant是已知类型。但是当声明被解析时,QVariant还不知道。因此,声明无效,编译器只能忽略它。

添加#include <QVariant>到头文件来解决这个问题。

它坏了,因为一些 Qt 头文件过去包含 <QVariant> ,而你隐含地依赖于它。随着 Qt 的更新,这种相互依赖性被最小化,如果在独立的翻译单元中编译,头文件现在只包含使它们有效所需的最少内容。因此,您的损坏代码已暴露其错误。

关于c++ - 未声明的标识符 'QVariant' 将旧版 Qt 4 转换为 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42700400/

相关文章:

c++ - 从父模板类转换为子模板类

c++ - 如何计算宏执行次数?

c++ - Qt5.7 构建和 -no-feature- 选项不存在

python - PyQt:如何使用 QComboBox::findData() 查找元组?

c++ - 替换 QVariant::Handler::canConvert

c++ - 对类对象数据成员从大到小排序

c++ - 为什么/如何编译?

c++ - QT:图片作为窗口

c++ - QSql模块与多线程应用

c++ - C++ 中 QVariant 的等价物是什么?