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