小白请教一个问题:按钮多次点击并发调用某个方法(如下: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();
});
}