我试图添加一个嵌套的结构(Node),该结构采用传入基类(LinkedList)的相同模板参数'T'。将模板参数传递给嵌套结构
当我尝试模板外部LinkedList类时,我得到了“非模板类LinkedList的显式特化”错误。如果我不添加它,私人节点“头”和“尾巴”不识别“T”
当我将模板添加到节点类,我得到一个“声明T'阴影模板参数“错误。但是,如果我没有明确地将它添加到Node类中,那么在结构中根本不会识别'T'。
如何声明模板并将其正确地从LinkedList类传递给嵌套的专用节点结构?
template<class T>
class LinkedList<T> {
private:
template<typename T>
struct Node {
T value;
Node<T>* next;
Node<T>* previous;
Node<T>(T value, Node<T>* next, Node<T>* previous)
:value(value),
next(next),
previous(previous){}
Node<T>& operator=(const Node<T>&) = delete;
};
Node<T>* head;
Node<T>* tail;
LinkedList& operator=(const LinkedList&) = delete;
public:
LinkedList<T>()
:head(nullptr),
tail(nullptr){}
~LinkedList<T>();
LinkedList& insertTail(T value);
};
'节点'不一定是模板。你可以(也应该)只使用'LinkedList'中的'T'(在名字后面不应该有'')。 –
WhozCraig
2014-08-31 07:00:16