我需要将QT遗产代码从4.7转换为5.8,我在QT Creator 4.2.1 Clang 7.0(Apple)64bit
中有一个编译错误查找.cpp文件
bool queries::insert(const QString &tableName_, const QMap<QString, QVariant> &values_) const
.cpp中的错误./src/classes/queries.cpp:283:15:错误:'insert'''的管行定义与指向'insert'insert'
在标题文件中查看
bool insert(const QString &tableName_, const QMap<QString, QVariant> &values_) const;
.h中的错误../src/classes/queries.h:157:64:错误:使用未宣布的标识符'qvariant'错误指向'qvariant>'
找到了类似的stackoverflow查询
好...那么替换是什么?
解析定义时, QVariant
是已知类型。但是,当声明被解析时,QVariant
尚不清楚。因此,声明无效,编译器不能忽略它。
将#include <QVariant>
添加到标题文件以解决该问题。
它破裂了,因为某些QT标头曾经包含<QVariant>
,并且您隐含地依赖于此。随着QT的更新,此类相互依赖性被最小化,现在仅包括在自由式翻译单元中编译时使其有效的最低限制。因此,您破裂的代码已暴露出来。