2
我一直在爲CList寫一個循環列表的自定義類。我一直把它作爲一個家庭作業的基礎,我很久以前完成了大量的複製粘貼,所以我不完全記得我一直在寫作的所有東西。不合格的ID和模板類
反正無非是想包括.h文件使我在使用空間std行錯誤:
main.cpp:11: error: expected unqualified-id before ';' token
除了兩個錯誤指着我的代碼功能:
In file included from main.cpp:9:
CList.h:119: error: non-template 'CIterator' used as template
CList.h:119: note: use 'CList<T>::template CIterator' to indicate that it is a template
這是有問題的功能:
template <class T>
typename CList<T>::CIterator<T> CList<T>::push(T const& v)
{
size++;
Node<T>* p = new Node<T>(v);
if (this -> size_ == 1)
{
head = p;
tail = p;
p -> next = p;
p -> prev = p;
}
else
{
tail -> next = p;
p -> next = head;
p -> prev = tail;
head -> prev = p;
tail = p;
}
return CIterator(p);
}
我真的不明白這裏的錯誤是。我告訴函數返回一個CList的CIterator,並表示這個函數是CList類的一部分。這就是我的理解,當我讀到行
typename CList<T>::CIterator<T> CList<T>::push(T const& v)
爲什麼會認爲CIterator是模板時顯然T是模板?我只是困惑。