簡體   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