如何在Qt中使d指针正确
我创建了如何在Qt中使d指针正确,qt,Qt,我创建了myClass类,为了隐藏成员,使用了d指针,但在编译源代码时出错。代码如下: 头文件: class myClassPrivate; class myClass : public QObject { Q_OBJECT public: myClass(QObject *parent = 0); ~myClass(); ... signals: public slots: private: myClassPrivate *d; }; 和相关的.
myClass
类,为了隐藏成员,使用了d指针,但在编译源代码时出错。代码如下:
头文件:
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”的使用无效在
myClass
构造函数中使用它之前,必须先将myClassPrivate
声明放入。在.cpp
文件中:
class myClassPrivate
{
// ...
};
myClass::myClass(QObject *parent):
QObject(parent),
d(new myClassPrivate())
{
}
你可能想在网上查阅一些资料,解释这个概念和Qt的便利宏Q\u D
,Q\u DECLARE\u PRIVATE
等等:
检查我的另一个答案,有很好的示例可以作为起点:好的,谢谢,我可以在myClassPrivate中创建析构函数以释放(m_文件),或者没有必要…是的,您可以而且应该创建一个
~myClassPrivate
析构函数删除并删除QFile
——否则会泄漏内存!