[英]Pass QNetworkReply pointer to QSharedPointer
有关在以下情况下使用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
?
什么是崩溃错误? 它确实在您提到的那行崩溃了。
在Qt中要小心,以将智能指针和QObjects育儿结合起来。 Qt中的育儿会通过某种伪垃圾回收来影响对象的释放。 删除的QObject的所有子对象也将被删除。 例如,将其与QSharedPointer结合使用可能会导致释放多个对象,或者在出现某种类型的问题后进行访问。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.