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?


  • Mod

    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


Anmelden zum Antworten