将 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)
我想将此指针传递给我的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 结合使用可能会导致多个对象空闲或释放后访问类型的问题。
相关文章:
- 删除 QSharedPointer 指向的 QObject
- 将 QNetworkReply 指针传递给 QSharedPointer
- QSharedPointer 在 emit 中被销毁
- 如何在 exec 循环停止后正确使用 QSharedPointer 的析构函数<QObject>?
- 在 qt5 中使用 QSharedPointer 时出现 Seg 错误
- QSharedPointer 或 std::shared_ptr 的生命周期
- qsharedPointer作为方法参数或方法的返回值的良好实践
- Setting QSharedPointer
- 来自原始指针的 QSharedPointer
- QSharedPointer::create()
- QSharedPointer::isNull() 和运算符之间的区别!().
- 在 QSharedPointer 中管理 QAbstractItemModel 数据
- 没有线程安全开销的 QSharedPointer
- QSharedPointer,如何传递它们,以及我是否需要它们
- 为什么 QSharedPointer:<T>:create 不完整对象的调用析构函数?
- 如何以正确的方式从容器中删除QSharedPointer
- 为什么类QSharedPointer中没有重载运算符T*()
- 访问QSharedPointer对象时出现分段错误
- QCache and QSharedPointer
- QSharedPointer does not return false