qt下使用智能指针出错的问题:invalid application of ‘sizeof’ to incomplete type xxx
书写文件如下#include <QObject>#include <QScopedPointer>class ElementPrivate;class Element : public QObject{public:Element();virtual ~Element() {}protected:explicit Element...
·
书写文件如下
#include <QObject>
#include <QScopedPointer>
class ElementPrivate;
class Element : public QObject
{
public:
Element();
virtual ~Element() {}
protected:
explicit Element(ElementPrivate *d_ptr);
const QScopedPointer<ElementPrivate> d_ptr;
};
上面编译时,会出现以下报错信息:
/home/init02/Qt5.10.1/5.10.1/gcc_64/include/QtCore/qscopedpointer.h:57: error: invalid application of ‘sizeof’ to incomplete type ‘ElementPrivate’
typedef char IsIncompleteType[ sizeof(T) ? 1 : -1 ];
^
错误原因
QScopedPointer智能指针使用的对象必须是完整的,必须包含相应对象的实现方式。
改正方法
在上面的文件中加入ElementPrivate类的定义头文件,再次编译,就可以通过了。
更多推荐
已为社区贡献2条内容
所有评论(0)