代码如下:
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书上复制粘贴的。
解决方案:10分
请把那一段代码挪到类定义外面。
解决方案:10分
//C++Primer第16.6.3.章节
//特化成员而不特化类
//照着书上的代码复制粘贴过来在VS2005下编译报错
//error C2039: “push”: 不是“Queue<Type>”的成员
template<>
Queue<const char*>::push(const char *const &val)
{
//代码略
//...
}
template<>
void pop( )
{
//代码略
//...
}
这个放到类外面,这是和外面的那个模板类并列的
解决方案:20分
正常的代码应该是这样
template <class Type>
class Queue
{
void push(Type &);
};
template <>
void Queue<const char*>::push(const char *&val)
{
}
请自行比对