我有我的密码:
for(QHash<long,float>::iterator i=list.begin();i!=list.end();++i)
{
long id = QVariant((*i).key()).toLongLong();
float ile = QVariant((*i).value()).toFloat();
}我变成了这样的错误:
request for member 'key' in 'i.QHash<K,V>::iterator::operator*<long int, float>()', which is of non-class type 'float'
long id = QVariant((*i).key()).toLongLong();如何将key()和value()转换为my float和int
发布于 2016-01-25 07:01:58
成员方法key和value是迭代器接口的一部分。
正因为如此,使用i.key()而不是(*i).key()就足够了。
values也是如此,对于它,您应该使用i.value()而不是(*i).value()。
迭代器的operator*返回对i-th值的引用,在您的例子中,返回一个没有成员方法key和value的float。
这些作业应类似于下列作业:
long id = i.key();
float ile = i.value();有关更多细节,请参见这里。
发布于 2016-01-25 07:02:09
key()和value()是迭代器的方法,所以您可以这样访问它们:
long id = QVariant(i.key()).toLongLong();
float ile = QVariant(i.value()).toFloat();*i与i.value()相同,因此您也可以为值编写QVariant(*i)。
您将得到所得到的错误,因为错误的行与以下内容相同:long id = QVariant(i.value().key()).toLongLong();,而且很明显,float值是错误中所说的非类,所以它不能有key()方法(或任何其他成员)。
最后,通过QVariant是完全没有必要的(至少在本例中是这样),所以您可以这样做:
long id = i.key();
float ile = *i;参考文件:http://doc.qt.io/qt-5/qhash-iterator.html
https://stackoverflow.com/questions/34986662
复制相似问题