小白請教一個問題:按鈕多次點擊并發呼叫某個方法(如下:getTextContent),導致pure virtual method called。
原因大概是并發呼叫操作同一個類成員指標(因需在異步回呼中進行deleteLater所以不能是區域申明的,受作用域影響),在某個操作中deleteLater之后,另一次操作又執行了某個虛函式但是指標已經被上一次操作析構了,導致的例外,這種情況要怎么處理呢?
除了限制單個請求還有其它辦法嗎?最好能支持同時并發呼叫。多謝!
偽代碼如下:
void Form::getTextContent(){
api = new HttpAPI();
api->getTextContent([&](bool success, QList<QPair<int,QString>> list){
//異步回呼
int error = -1;
QString msg = "";
if(success){
QListIterator<QPair<int, QString> > iter(list);
QPair<int, QString> pair;
while (iter.hasNext())
{
pair = iter.next();
error = pair.first;
msg = pair.second;
}
if(error==0){
//執行某些操作
}
}
api->deleteLater();
});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/23756.html
標籤:Qt
