我将尝试在模板类内定义模板成员。
以下是头文件片段:
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;
}
编译器给出了以下错误提示:在'<'标记之前需要初始化程序。 我无法弄清楚自己做错了什么。有人能帮忙吗?