BUG复现代码
PS:Command 是一个结构体,里面有名为cs的属性;
//test
QHash<int, Command>testHash;
Command cmd;
testHash.insert(1, cmd);
while (true)
{
qDebug() <<testHash.size()<< testHash[1].cs << testHash.size();//①
//qDebug() << testHash.value(1).cs << testHash.size();//②
if (testHash.contains(1))//③
{
qDebug() << "testHash.contains(1)=true;";
testHash.remove(1);
continue;
}
else
{
break;
}
}
上述代码,①打印时testHash.size() 的值为0;但是③会一直成立;
问题出在testHash[1]。但为什么会出来testHash.size() 的值为0,但testHash.contains(1)却成立,待研究。
续:有网友执行相同的代码,①处有的人打印是0,testHash[1].cs,1;有的打印是1,testHash[1].cs,1;而我是0,testHash[1].cs,0;鉴于些,有人提出,不同的结果应该有所用的QT库、C++版本有关。
PS:后来我同时打开打印①②,在②出,size()的值是1;