关于在以下情况中使用QSharedPointer
的一个问题:
我有一个包含两个QSharedPointer
私有类成员的类:
class xy{
...
private:
QSharedPointer<QNetworkAccessManager> m_nam;
QSharedPointer<QNetworkReply> m_nr;
};
在我发送QNetworkAccessManager
帖子的代码中,返回值是QNetworkReply
指针。
QNetworkReply * QNetworkAccessManager::post(const QNetworkRequest & request, const QByteArray & data)
我想将此指针传递给我的QSharedPointer
,即m_nr
。
我试过了:
m_nam.reset( new QNetworkAccessManager(m_parent.data()));
QNetworkRequest request(url);
...
...
// following line is my problem
m_nr = QSharedPointer<QNetworkReply>(m_nam->post(request, postData));
...
但是坠毁了,然后我尝试了:
m_nam.reset( new QNetworkAccessManager(m_parent.data()));
QNetworkRequest request(url);
...
...
// following line is my problem
m_nr.reset( m_nam->post(request, postData));
...
但也坠毁了。
如何将QNetworkReply
指针正确传递给QSharedPointer
?
答案 0 :(得分:0)
崩溃的错误是什么? 它是否完全崩溃在你提到的那条线上。
在Qt中要小心,以结合智能指针和QObjects育儿。 Qt中的Parenting通过某种伪垃圾收集影响对象释放。 删除的QObject的所有子项也将被删除。 例如,将它与QSharedPointer相结合可能会导致多个对象免费或在免费问题之后访问。