2013-04-28 69 views
-2

我想從我創建的鏈表中返回一個引用/指針節點。這裏是我的類和方法返回節點,當我傳遞一個值時,它在我的列表中查找,但編譯器給我三個錯誤: 1錯誤C2143:語法錯誤:缺少';' '*'之前 2錯誤C4430:缺少類型說明符 - 假定爲int。注意:C++不支持default-int 3錯誤C1903:無法從先前的錯誤中恢復;停止編譯從鏈表中返回一個引用/指針節點c

有人可以幫我嗎?非常感謝你!

template <class Type> 
class LinkedList 
{ 
private: 
struct Node 
{ 
    Type value; 
    Node* next; 
}; 
    Node* list; 
public: 

//Other functions here 

Node* FindNode(Type); 

}; 

template <class Type> 
LinkedList<Type>::Node* LinkedList<Type>::FindNode(Type _value) 
{ 
Node* q = first; 
while(q != NULL && q->value != _value) 
    q = q->next; 
return q; 
} 

回答

0

既然你有依賴性的,合格的名字,你應該使用typename消歧:

template <class Type> 
    typename LinkedList<Type>::Node* LinkedList<Type>::FindNode(Type _value) 
// ^^^^^^^^ 

否則編譯器將無法解析Node作爲一個類型的名稱。

+0

非常感謝。 如何從另一個班級的該班級實例? 我在做: LinkedList list; 但它沒有工作,給我錯誤LNK2001和LNK2019。 – Hille 2013-04-28 17:11:01

+0

@ user2177428:我不確定我是否理解。你在做什麼?什麼是錯誤信息?此外,請確保您的類模板成員函數的定義與類模板LinkedList本身的定義位於相同的頭文件中 - 通常模板定義屬於標頭 – 2013-04-28 17:15:24

+0

是的,那就是問題所在,我的方法在不同的文件。如果我把所有的方法放在同一個頭文件中,它就像一個魅力一樣,但是我必須做的是讓我的方法在其他cpp文件中?我試過在頭文件中的每個方法之前放置模板,但它不起作用。我非常感謝你,因爲你幫了我很多。 – Hille 2013-04-28 17:42:42