Пример итератора QHash — нет совпадения для оператора & lt; & lt ;?

Изучая QT, я пытаюсь скомпилировать первый пример из http://qt-project.org/doc/qt-4.8/qhash-iterator.html

Мой код

#include <QHash>
#include <iostream>
#include <QString>

int main(int argc, char *argv[])
{
QHash<QString, int> hash;
hash.insert("January", 1);
hash.insert("February", 2);
hash.insert("December", 12);

QHash<QString, int>::iterator i;
for (i = hash.begin(); i != hash.end(); ++i)
std::cout << i.key() << ": " << i.value() << std::endl;

}

не компилируется. Я получаю эту ошибку:

main.cpp: 14: ошибка: нет совпадения для оператора ‘<<‘
в ‘std :: cout << i.QHash :: iterator :: key с Key = QString, T
= int ‘

и я понятия не имею, что не так. Код в значительной степени скопирован из документации.
Я что-то здесь упускаю?

1

Решение

Это потому что std::cout не работает с QString, Попробуйте использовать QString::toStdString()или вы также можете использовать qDebug() вместо cout

Увидеть этот вопрос& для деталей.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]