关于在以下场景中使用QSharedPointer的一个问题:
我有一个包含两个QSharedPointer私有类成员的类:
class xy{
...
private:
QSharedPointer<QNetworkAccessManager> m_nam;
QSharedPointer<QNetworkReply> m_nr;
};在我发送QNetworkAccessManager post的代码中,返回值是一个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
发布于 2017-08-09 16:31:50
crash上的错误是什么??它是不是真的在你提到的那条线上坠毁。
在Qt中要小心,将智能指针和QObjects育儿结合起来。Qt中的父子关系通过某种伪垃圾回收来影响对象释放。删除的QObject的所有子对象也将被删除。例如,将其与QSharedPointer结合使用可能会导致多个对象释放或释放后访问之类的问题。
https://stackoverflow.com/questions/45506146
复制相似问题