Typedef внутри класса шаблона не работает

У меня проблема со следующим кодом:

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

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

Как видите, у меня есть typedef внутри lamePtr. Внутри класса smarterPointer у меня есть функция funFun (). Что я пытаюсь сделать, так это создать еще один typedef someType. До этой строки все работает нормально, пока мы не дойдем до строки с запросом someType :: ptr.

Я хочу, чтобы здесь произошло то, что "query" станет lamePtr :: ptr (простое значение, а не typedef;). Однако я получаю ошибки компиляции (с gcc 4.4.3):

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

Что я здесь делаю не так?

8
задан Benjamin Lindley 2 April 2011 в 17:42
поделиться