我最近一直在从事一个项目。当我尝试运行项目时,出现此错误:

/ASSERT failure in QList<T>::operator[]: "index out of range", file /usr/include/arm-linux-gnueabihf/qt5/QtCore/qlist.h, line 487
The program has unexpectedly finished.

我应该如何追踪问题的根源?

我相信添加此代码会导致错误
startvaluexy = Client::straightxy;
qDebug() << "start value Received from server :" << startvaluexy;
QStringList xy = startvaluexy.split("|");

x = xy[2];

QString num1 = x;
int x = num1.toInt();

qDebug() << "start x value :" << x;

y = xy[3];

QString num2 = y;
int y = num2.toInt();

qDebug() << "start y value :" << y;

当此x = xy[2]; y = xy[3];取出后,可以正常运行。

最佳答案

您必须使用xy.size()检查通过split返回的xy列表的大小

...不确定您的代码是什么意思,但是我会写这样的东西

if(xySize >= 4){
     QString num1 = xy[2];
     QString num2 = xy[3];

     int x = num1.toInt();
     int y = num2.toInt();

     qDebug() << "start x value :" << x;
     qDebug() << "start y value :" << y;

     xstart = x;
     ystart = y;
}

关于c++ - QList <T>::operator []中的ASSERT失败: “index out of range”文件/usr/include/arm-linux-gnueabihf/qt5/QtCore/qlist.h,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43842049/

10-12 14:55