我的项目在qt4
上运行良好,现在我想在qt5
上运行它。
我已经修复了大部分的差异,但我仍然得到错误:c2666: QByteArray::operater == ': 11 overloads have similar conversions.
我该如何修复它?
代码:
h文件:#ifndef A_H
#define A_H
#include <QObject>
class a
{
public:
explicit a();
QByteArray arr;
int validate();
signals:
public slots:
};
#endif // A_H
on CPP file:
#include "a.h"
int a::validate()
{
a* p = new a();
if(p->arr == NULL)
return 0;
return 1;
}
错误出现在这行:"if(p->arr == NULL)"
if(p->arr == NULL)
那是不行的。arr
在这里不是指针,也不是整数,所以不能是NULL
。
您可以使用QByteArray
中的isNull()方法if (p->arr.isNull())
或写
if (p)
取决于您的场景,您是否希望检查正确的构造或内存分配失败。
同样,您正在尝试在没有Q_OBJECT宏的类中使用槽,并且该类也没有继承QObject。这也是错误的。槽不是任何单个c++类的通用c++特性。是一个Qt扩展。
此外,您可能不希望将arr
成员设为公共,因为在类中将成员变量设为公共是不寻常的。通常,它们可以通过成员方法访问。