我已经创建了myClass
类,为了隐藏成员,使用了d-pointer但是在编译我的源代码时出错了。这是代码:
标题文件:
class myClassPrivate;
class myClass : public QObject
{
Q_OBJECT
public:
myClass(QObject *parent = 0);
~myClass();
...
signals:
public slots:
private:
myClassPrivate *d;
};
和相关的.cpp
myClass::myClass(QObject *parent):
QObject(parent),
d(new myClassPrivate())
{
}
myClass::~myClass()
{
delete d;
}
class myClassPrivate
{
public:
myClassPrivate();
...some methods...
QTextStream stream;
QFile* m_File;
};
myClassPrivate::myClassPrivate():
m_File(new QFile)
{
}
它说:'struct myClassPrivate'的前向声明; 无效使用不完整类型'myClassPrivate'
答案 0 :(得分:4)
在myClassPrivate
构造函数中使用它之前,必须先放置myClass
声明。在.cpp
文件中:
class myClassPrivate
{
// ...
};
myClass::myClass(QObject *parent):
QObject(parent),
d(new myClassPrivate())
{
}
您可能需要查看网络上的一些资料来解释概念和Qt的便利宏Q_D
,Q_DECLARE_PRIVATE
等等:
答案 1 :(得分:3)
检查我的另一个答案,有好的样本可以用作起点:Invalid use of incomplete type on qt private class