2013-04-28 46 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