You need to call i.next() before taking the value with i.value() (btw. its in the first example in QHashIterator documentation):
while (i.hasNext()) {
i.next();
qDebug()<<i.key();
Person *per = i.value();
if( per ){ // better check before dereferencing a pointer
qDebug()<< "Name: " << per->m_name << "Number: "<<per->m_number;
}
}
while (i.hasNext()) {
i.next();
qDebug()<<i.key();
Person *per = i.value();
if( per ){ // better check before dereferencing a pointer
qDebug()<< "Name: " << per->m_name << "Number: "<<per->m_number;
}
}
To copy to clipboard, switch view to plain text mode
also if I call hash.clear() at the end do I need to delete the value first or clear() will take care of it ?
Yes you need to delete allocated values yourself, QHash does not know what kind of data you keep inside it.
Bookmarks