Iterator für Templatebasiertes hash_map
-
So - wieder ein kleines problemchen auf das ich nicht komme:
Folgender code:
struct HASH_FUNCTION { Key operator()(const Key k) const { return k; } }; template <class T> struct MY_DATA { T* a; T* b; T* c; Key key; }; //Member hashmap hash_map<Tra, MY_DATA<T>, HASH_FUNCTION> m_hash_map; template <class T> IIA<T>::IIA() { hash_map<Key, MY_DATA<T>, HASH_FUNCTION>::iterator it; for(it = m_hash_map.begin(); it != m_hash_map.end(); it++) //... }ich bekomme den iterator nicht hin. würde gerne über die map iterieren aber der compiler spuckt mir folgendes aus:
[code]
error: expected `;' before 'it'
IAA.imp:73: error: 'it' was not declared in this scope
[code]Wo liegt das Problem? An der Templatedefinition wieder?
Was wäre eine Lösung um einen iterator zu bekommen?
-
hash_map<Key, MY_DATA<T>, HASH_FUNCTION>::iterator ist ein (vom Templateparameter T) abhängiger Bezeichner. Da aus dem Kontext nicht erkennbar ist, dass dieser Bezeichner ein Typ ist, musst du dies Dem Compiler per typename sagen.
-
ok - ich versuche mich dran weiß aber ncoh nciht wie es gehen wird mit typename
also wie man es richtig stellt....mal sehen
-
typename hash_map<Key, MY_DATA<T>, HASH_FUNCTION>::iterator it;
-

sorry - hab genau das als erstes probiert und übersehen dass es an der stelle geklappt hat
danke