我試圖添加一個嵌套的結構(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