2017-03-13 19 views
0

「辞書」という名前のハッシュにデータを渡そうとしていますが、QMutableHashIteratorを使用してハッシュを反復して値を追加すると考えましたが、私はそれを解決する方法を知らない。私は同様のエラーで他の質問を見てきましたが、どれも本当に私を助けませんでした。だから私は、私は誰かが私はこのエラーを解決する助けてくださいすることができ、求めるだろうと思った:QMutableHashIterator - 適切なデフォルトのコンストラクタがありません

mainwindow.h:

#ifndef MAINWINDOW_H 
#define MAINWINDOW_H 

#include <QMainWindow> 
#include <QMessageBox> 

namespace Ui { 
    class MainWindow; 
} 

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 

public: 
    explicit MainWindow(QWidget *parent = 0); 
    ~MainWindow(); 

private slots: 
    void on_pushButton_clicked(); 

private: 
    Ui::MainWindow *ui; 
    QHash<QString, QString> dictionary; 
    QMutableHashIterator<QString, QString> i; 
}; 

mainwindow.cpp:

ここ
mainwindow.cpp:7: error: C2512: 'QMutableHashIterator<QString,QString>' : no appropriate default constructor available 

は私のコードです
#include "mainwindow.h" 
#include "ui_mainwindow.h" 

MainWindow::MainWindow(QWidget *parent) : 
QMainWindow(parent), 
ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 

    const QString content = "word"; 
    i = dictionary; 
    while(i.hasNext()) 
    { 
    i.next(); 
    i.setValue(content); 
    } 
} 

MainWindow::~MainWindow() 
{ 
    delete ui; 
} 

void MainWindow::on_pushButton_clicked() 
{ 
    QString word = "dog"; 

    while(i.findNext(word)) 
    { 
    QMessageBox::information(this,tr("Word Has Been found"), 
          word); 
    } 
} 

ありがとうございます!

+0

「i」は会員でなければなりませんか?はいの場合、データメンバーを初期化する場所はどこですか?とにかく、私はコンストラクタのループが実行されるとは思わない。 – LogicStuff

答えて

1

トラバースするQHashiを初期化する必要があります。 QMutableHashIterator documentationを参照してください。

MainWindow::MainWindow(QWidget *parent) : 
QMainWindow(parent), 
ui(new Ui::MainWindow), 
i(dictionary) // here 
{ 
    // ... 
} 

単純に、ソリューションのロジックで可能な場合は、代わりにメンバー変数として使用するたびにイテレータを作成します。

+0

これはたくさんの意味があります、ありがとうございます。 –

+0

あなたを助けてうれしい! – cbuchart

関連する問題