2013-07-16 3 views
1

обучение QT, i`m пытается скомпилировать первый пример из http://qt-project.org/doc/qt-4.8/qhash-iterator.htmlПример итератора QHash - нет соответствия для оператора <<?

Моего кода

#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: error: no match for 'operator<<' in 'std::cout << i.QHash::iterator::key with Key = QString, T = int'

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

ответ

3

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

Подробнее см. this Q&A.

+1

или qPrintable() –

Смежные вопросы