2013-05-22 87 views
-3

编辑:修复了错误模板语法错误

这是我第一次使用模板和得到讨厌的语法错误。我不知道错误发生在哪里,因为编译器告诉我我缺少一个分号,然后是数百个错误。然而,一切都很好。我几乎可以肯定没有分号不见了。

任何人都可以帮我找到这根干草堆? PS错误发生在List的构造函数的定义上,并且缺少';'前“<”(即下面的代码)

template <typename T> 
class Node 
{ 
template <typename T> 
friend class List<T>; 

public: 
//Default constructor 
Node(); 

//Copy constructor 
Node(const Node<T> & copy); 

//Overloaded assignment operator 
Node<T> &operator=(const Node<T> & rhs); 

//Destructor 
~Node(); 

//Methods 
T CreateNode(const T & T); 
T &getData(); 

private: 
//Data members 
T data; 
Node * mNext; 
}; 
+2

所有这些代码是否真的有必要?你不能缩小它吗? –

+0

如果这些定义在标题中,他们可能应该在包含警卫中。如果不是,他们需要成为标题的一部分。 – chris

+0

@ MrPickle5,参见http://sscce.org。没有人想通过大量的代码来查找错误,当你可以采取一种算法的方法来减少它。 – chris

回答

1

我不能保证它是只有的问题,但是这当然看起来可疑:

T &List<T>::Front() const 
T &List<T>::Back() const 
void Purge(); 

在猜测,你打算到声明了三个独立的功能,在这种情况下,它缺少了几个分号的,并且应该看起来更像是这样的:

T &List<T>::Front() const; 
T &List<T>::Back() const; 
void Purge(); 

...或者,很可能:

T &Front() const; 
T &Back() const; 
void Purge(); 
+0

这很尴尬,谢谢。但是,它仍然给我同样的错误。 – MrPickle5

+0

@ MrPickle5:我已经修补了一个[版本](http://ideone.com/2ISJu3),其中包括您遗漏的部分的最小定义,这些定义将被编译。 –

+0

非常感谢杰里! – MrPickle5

0

发现错误。它在我的node.h文件中。代码是

friend class List<T>; 

我删除了,它的工作。 :)