类的模板函数特化,该如何解决

类的模板函数特化
代码如下:

template <class Type> 
class Queue 
{
public:
//代码略
//...
private:
//代码略
//...
public:
    void Queue<Type>::push( Type & )     
{
//代码略
//...
}
void pop()           
{
//代码略
//...
}
//C++Primer第16.6.3.章节
//特化成员而不特化类
//照着书上的代码复制粘贴过来在VS2005下编译报错
//error C2039: “push”: 不是“Queue<Type>”的成员
template<>
Queue<const char*>::push(const char *const &val)
{
//代码略
//...
}
template<>
void pop( )
{
//代码略
//...
}
};

需求是为Queue类实现const char * 类型的特化函数,请问这是编译器的问题没得办法解决吗?代码是照着C++ Primer书上复制粘贴的。

------解决思路----------------------
请把那一段代码挪到类定义外面。
------解决思路----------------------

//C++Primer第16.6.3.章节
    //特化成员而不特化类
    //照着书上的代码复制粘贴过来在VS2005下编译报错
    //error C2039: “push”: 不是“Queue<Type>”的成员
    template<>
    Queue<const char*>::push(const char *const &val)
    {
        //代码略
        //...
    }
    template<>
    void pop( )
    {
        //代码略
        //...
    }


这个放到类外面,这是和外面的那个模板类并列的
------解决思路----------------------
正常的代码应该是这样
template <class Type>
class Queue
{
    void push(Type &);
};
template <>
    void Queue<const char*>::push(const char *&val)
{

}

请自行比对