iterator w mapie

0

Cześć :)
Mam taką mapę w klasie szablonowej ( template<typename T> ) jako atrybut prywatny

    static std::map<T*, BlockInfo<T>* > Mapa;
    std::map<T*, BlockInfo<T>* >::iterator tr;

I chciałbym stworzyć iterator jak powyżej, ale dostaję błąd:

error: need typename before std::map<int, BlockInfo<T>*>::iterator because std::map<int, BlockInfo<T>*> is a dependent scope

1

No i w czym problem? Dostałeś podpowiedź co zrobić. Musisz użyć słowa kluczowego typename. Jest tak zawsze kiedy chcesz tworzyć obiekt klasy zagnieżdżonej który jest zalezny od tego samego parametru szablonu co klasa zewnętrzna.
http://www.parashift.com/c++-faq/nondependent-name-lookup-types.html

0

Jest tak zawsze kiedy chcesz tworzyć obiekt klasy zagnieżdżonej który jest zalezny od tego samego parametru szablonu co klasa zewnętrzna.

Ale ja nie tworzę obiektu klasy zagnieżdżonej, ponieważ nie mam takiej klasy.

1
typename std::map<T*, BlockInfo<T>* >::iterator tr; 

1 użytkowników online, w tym zalogowanych: 0, gości: 1