繁体   English   中英

将QNetworkReply指针传递给QSharedPointer

[英]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)

我想将此指针传递给我的QSharedPointerm_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM