2014-10-01 85 views
0

我有一個qt應用程序,我將所有會話cookie存儲在cookieJar中。爲了在不關閉應用程序的情況下刪除會話,當按下按鈕時,我正在調用cookieJar->deleteLater();刪除會話cookie qt

這是拋出了以下錯誤: The inferior stopped because it triggered an exception. Stopped in thread 0 by: Exception at 0x54d6559d, code: 0xc0000005: write access violation at: 0x1, flags=0x0 (first chance)

cookieJar是目前公共變量,它是與當前類的父初始化。爲什麼我仍然無法刪除它?

+0

也許試圖通過在'QNetworkCookieJar :: setAllCookies空列表()的',而不是刪除。這個exeption看起來像你使用錯誤的指針(不存在指針) – Chernobyl 2014-10-01 18:08:26

+0

@Chernobyl:我早些時候嘗試過('QList cookieList = new QList (); cookieJar-> setAllCookies(&cookieList)不起作用。向我展示如何傳遞一個空的QList? – BurninatorDor 2014-10-01 18:13:48

+0

新?你不使用指針,也許試試這個:'QList cookieList(); cookieJar-> setAllCookies(cookieList)' – Chernobyl 2014-10-01 18:17:47

回答

0

你不需要破壞QNetworkCookieJar,因爲:

Note: QNetworkAccessManager takes ownership of the cookieJar object. 

QNetworkCookieJar實例的刪除會導致由QNetworkAccessManager訪問錯誤的指針。

您可以實現以下命令來刪除所有cookie條目:

foreach (QNetworkCookie& cookie, networkAccessManager->cookieKar()->allCookies()) 
{ 
    networkAccessManager->cookieKar()->deleteCookie(cookie); 
} 
+0

好的。那麼我怎樣才能清除所有的cookies,以便我可以成功刪除我的會話和註銷? – BurninatorDor 2014-10-01 18:14:26

+0

NETWORK_ACCESS_MANAGER-> cookieJar() - > setAllCookies(QList());應該很好用 – 2014-10-01 18:21:29

+0

剛剛實現它,現在它拋出這個錯誤:'QNetworkCookieJar :: setAllCookies不能訪問在類'QNetworkCookieJar''中聲明的受保護成員' – BurninatorDor 2014-10-01 18:30:46