Typedef intérieur de la classe de modèle ne fonctionne pas

J'ai un problème avec le code suivant:

template <typename U>
class lamePtr
{
public:
    typedef U* ptr;
};

template <typename U>
class smarterPointer
{
    public:
    void funFun()
    {
        typedef lamePtr<U> someType;
        someType::ptr query;
    }
};

Comme vous le voyez, j'ai une définition de type à l'intérieur de lamePtr. À l'intérieur de smarterPointer classe j'ai une fonction funFun(). Que suis-je en train d'essayer de faire est de faire un autre typedef someType. Jusqu'à cette ligne, tout fonctionne bien jusqu'à ce que nous arrivons à la ligne avec someType::ptr requête.

Ce que je veux, ici, de se produire est que "requête" deviendra lamePtr< U >::ptr (une simple valeur, pas une définition de type ;). Cependant, j'obtiens des erreurs de compilation (gcc 4.4.3):

temp.cpp: In member function void smarterPointer<U>::funFun()’:
temp.cpp:15: error: expected ‘;’ before query

Ce que je fais mal?

Liés à, avec beaucoup d'informations sur les raisons de l' typename est nécessaire: Où et pourquoi dois-je mettre template et typename sur dépendante des noms?
Dans l'avenir, n'essayez pas de formater votre code avec les balises html. Il suffit d'entrer comme ça, sélectionner tout, puis cliquez sur le {} bouton.
Merci, je vais garder cela à l'esprit pour l'avenir. Merci pour la référence à James, je vais passer un peu de temps

OriginalL'auteur Melon | 2011-04-02