我正在尝试在模板类中定义模板成员。
这是头文件的片段:
template <typename Type>
class Queue
{
private:
// class scope definitions
// Node is a nested structure definition local to this class
struct Node {Type item; struct Node* next;};
enum {Q_SIZE = 10};
template <typename Type2> class DeepCopy // template member
{
public:
void docopy(Type2& d, const Type2& s);
};
...
因此定义了模板成员,但我想对 docopy 方法进行显式特化,以便在类型为指针时进行深度复制。我将使用方法模板和特化从头文件中放入另一个片段:
// template member
template <typename Type>
template <typename Type2>
void Queue<Type>::DeepCopy<Type2>::docopy(Type2& d, const Type2& s)
{
d = s;
}
// template member specialization for pointers
template <typename Type>
template <typename Type2>
void Queue<Type*>::DeepCopy<Type2*>::docopy(Type2* d, const Type2* s)
{
if (s)
d = new (*s);
else
d = 0;
}
编译器向我发送以下错误:“<”标记之前的预期初始化程序。
我无法弄清楚我做错了什么。有什么帮助吗?