首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将QNetworkReply指针传递给QSharedPointer

将QNetworkReply指针传递给QSharedPointer
EN

Stack Overflow用户
提问于 2017-08-04 19:51:51
回答 1查看 279关注 0票数 0

关于在以下场景中使用QSharedPointer的一个问题:

我有一个包含两个QSharedPointer私有类成员的类:

代码语言:javascript
复制
class xy{

...

private:
    QSharedPointer<QNetworkAccessManager>   m_nam;
    QSharedPointer<QNetworkReply>           m_nr;
};

在我发送QNetworkAccessManager post的代码中,返回值是一个QNetworkReply指针。

代码语言:javascript
复制
QNetworkReply * QNetworkAccessManager::post(const QNetworkRequest & request, const QByteArray & data)

我想把这个指针传递给我的QSharedPointer,即m_nr。我试过了:

代码语言:javascript
复制
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));
...

但是崩溃了,然后我试着:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2017-08-09 16:31:50

crash上的错误是什么??它是不是真的在你提到的那条线上坠毁。

在Qt中要小心,将智能指针和QObjects育儿结合起来。Qt中的父子关系通过某种伪垃圾回收来影响对象释放。删除的QObject的所有子对象也将被删除。例如,将其与QSharedPointer结合使用可能会导致多个对象释放或释放后访问之类的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45506146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档