未声明的标识符 'QVariant' 将旧版 Qt 4 转换为 5
Undeclared identifier 'QVariant' convert legacy Qt 4 to 5
我需要将 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: 'insert' 的外联定义与 'queries' 中的任何声明不匹配错误指向至 'insert'
查看头文件
bool insert(const QString &tableName_, const QMap<QString, QVariant> &values_) const;
.h 中出错
../src/classes/queries.h:157:64: 错误:使用未声明的标识符 'QVariant' 错误指向 'QVariant>'
Found similar Whosebug query
好的...那么替代品是什么?
解析定义时,QVariant
是已知类型。但是当声明被解析时,QVariant
还不知道。因此,声明无效,编译器只能忽略它。
将 #include <QVariant>
添加到头文件以修复该问题。
它坏了,因为一些 Qt 头文件过去常常包含 <QVariant>
,而您隐含地依赖于它。随着 Qt 的更新,这种相互依赖性被最小化,如果在独立的翻译单元中编译,头文件现在只包含使它们有效所需的最少内容。因此,您的损坏代码已暴露其错误。
我需要将 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: 'insert' 的外联定义与 'queries' 中的任何声明不匹配错误指向至 'insert'
查看头文件
bool insert(const QString &tableName_, const QMap<QString, QVariant> &values_) const;
.h 中出错 ../src/classes/queries.h:157:64: 错误:使用未声明的标识符 'QVariant' 错误指向 'QVariant>'
Found similar Whosebug query
好的...那么替代品是什么?
解析定义时,QVariant
是已知类型。但是当声明被解析时,QVariant
还不知道。因此,声明无效,编译器只能忽略它。
将 #include <QVariant>
添加到头文件以修复该问题。
它坏了,因为一些 Qt 头文件过去常常包含 <QVariant>
,而您隐含地依赖于它。随着 Qt 的更新,这种相互依赖性被最小化,如果在独立的翻译单元中编译,头文件现在只包含使它们有效所需的最少内容。因此,您的损坏代码已暴露其错误。