- A+
报错
error: C2679: 二进制“=”: 没有找到接受“QHash<QString,QString>::const_iterator”类型的右操作数的运算符(或没有可接受的转换) D:\Qt5.6.2\5.6\msvc2013\include\QtCore/qhash.h(350): 可能是“QHash<QString,QString>::iterator &QHash<QString,QString>::iterator::operator =(const QHash<QString,QString>::iterator &)” 尝试匹配参数列表“(QHash<QString,QString>::iterator, QHash<QString,QString>::const_iterator)”时
原因分析
QHash<QString, QString>::iterator it;可以用于遍历和修改操作
QHash<QString, QString>::const_iterator it;所指元素是一个常量,可用于遍历,不可用于修改所指元素
函数的形参为const QHash<QString,QString> hash,是不允许对hash进行修改的,所以在对hash进行遍历时,需要选择const_iterator
解决方案
遍历qhash的函数
- void bianli(const QHash<QString,QString> hash)
- {
- QHash<QString, QString>::const_iterator it;
- for( it=hash.constBegin(); it!=hash.constEnd(); ++it)
- {
- qDebug() << it.key() <<" " << it.value();
- }
- }
调用
- QHash<QString, QString> map;
- map.insert("beijing", "111");
- map.insert("shanghai", "021");
- map.insert("tianjin", "022");
- map.insert("chongqing", "023");
- map.insert("jinan", "0531");
- map.insert("wuhan", "027");
- bianli(map);