2011-04-27 70 views
3

有誰有如何發生這個錯誤任何見解?我做了一個鏈表在C++中,在我的主要方法的模板,我有這樣的代碼:'名單」是不是一個模板

List<int> list; 
list.insert(1, 9); 

而且我得到的第一行這樣的錯誤:

`List' is not a template

我包括這個文件:

template <typename T> 
class List 
{ 
public: 
     List(); 
     List(const List& aList); 
     ~List(); 

     bool isEmpty() const; 
     int getLength() const; 
     void insert(int index, const T& newItem); 
     void remove(int index); 
     void retrieve(int index, T& dataItem) const; 

private: 
     struct ListNode 
     { 
       T item; 
       ListNode *next; 
     }; 

     int size; 
     ListNode *head; 

     ListNode *find(int index) const; 
}; 

由於空間原因沒有發佈實現文件,但是我在必要時發佈了單個函數。

我試圖改變List(const List& aList);List(const List<T>& aList);,但並沒有真正改變任何東西。模板語法讓我困惑>。 <

+4

編譯爲我好,當我嘲笑的功能與空機構。該錯誤必須在其他地方。另外,不要將模板代碼放在.cpp文件中,編譯器需要知道需要實例化的確切代碼,所以它需要放在一個頭文件中。 – Xeo 2011-04-27 04:12:09

+2

它使用g ++編譯我(在鏈接時模仿未定義的函數)。 – 2011-04-27 04:13:40

+0

您是否在頭文件的單獨文件中實現? – jonsca 2011-04-27 04:14:05

回答

2

你確定你的列表模板類是不是在不同的命名空間?

您是否嘗試過重命名你的模板類,以獨特的東西,以確保您的實例,你以爲你是一流的?

0

有沒有可能是你在.cpp文件中寫的模板代碼?

我被這條線去的:

Not posting the implementation file 

模板代碼永遠只能在.h文件中,不能有任何「實現文件」。
究其原因,複雜的,因爲他們是愚蠢的:)

+0

這不是原因。這個答案已經發布 - 刪除 - 在這裏。但是,這個錯誤是無關的。 – 2011-06-01 13:16:05