2017-03-25 10 views
0

QMap<QString, QString>::const_iteratorをポインタとして使用するにはどうすればよいですか?QMap <QString、QString> :: const_iteratorをポインタとして使用するにはどうすればよいですか?

QMap<QString, QString>::const_iterator *i = map -> constBegin(); 
     while (i != map -> constEnd()) { 
      qDebug() << i -> key() << ": " << i -> value(); 

      i++; 
     } 
} 

私はエラーを取得する:

/my_class.cpp:36: error: cannot convert ‘QMap<QString, QString>::const_iterator’ to ‘QMap<QString, QString>::const_iterator*’ in initialization 
     QMap<QString, QString>::const_iterator *i = map -> constBegin(); 
                       ^
+0

* *イテレータは、逆参照演算子のオーバーロードによってポインタをエミュレートするかもしれませんが、ポインタ自体はポインタではありません。 –

+0

@Someprogrammerdudeにお返事ありがとうございます。どうすればいいですか?私は、 'QMap ' ** 'map' **をポインタ' * map'として得ています。 –

答えて

2

エラーは、この行にあります。ここでは

QMap<QString, QString>::const_iterator *i = map -> constBegin(); 
             ~~ 

は、あなただけのconst_iteratorしかしQMap::constBegin()リターンにconst_iteratorポインタを定義しています。

単に問題解決、*を削除:点である

QMap<QString, QString>::const_iterator i = map -> constBegin(); 

、反復子は、既にポインタと同様に振る舞うので、ポインタを定義する従来の構文は不要です。

イテレータの場合はgreat tutorialです。

関連する問題