2017-03-25 7 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입니다.