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