apud |
2020-06-28 22:47 |
pure virtual method called问题
小白请教一个问题:按钮多次点击并发调用某个方法(如下: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(); }); } |
|