0
我寫了一個雙節點鏈表的「節點」模板類。C++模板類給出沒有明顯錯誤的語法錯誤
頭文件
template< class T >
class Node
{
public:
Node();
~Node();
Node<T>* GetNext();
Node<T>* GetPrev();
void SetNext(Node<T>* pNode);
void SetPrev(Node<T>* pNode);
void SetData(T& data);
T* GetData();
private:
Node<T>* p_Next;
Node<T>* p_Prev;
T* p_Data;
};
template< class T >
Node<T>::Node() : p_Next(NULL), p_Prev(NULL), p_Data(NULL)
{
}
//======================================================================================
template< class T >
Node<T>::~Node()
{
if(p_Data != NULL)
delete p_Data;
p_Next = NULL;
p_Prev = NULL;
}
//======================================================================================
template< class T >
Node<T>* Node<T>::GetNext()
{
return p_Next;
}
//======================================================================================
template< class T >
Node<T>* Node<T>::GetPrev()
{
return p_Prev;
}
//======================================================================================
template< class T >
void Node<T>::SetData(T& data)
{
if(p_Data == NULL)
p_Data = new T;
*p_Data = data;
}
//======================================================================================
template< class T >
T* Node<T>::GetData()
{
return p_Data;
}
當我嘗試編譯Visual Studio中給了我下面的語法錯誤在具有構造函數實現的線。
error C2143: syntax error : missing ';' before '<'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2988: unrecognizable template declaration/definition
error C2059: syntax error : '<'
error C2588: '::~Node' : illegal global destructor
fatal error C1903: unable to recover from previous error(s); stopping compilation
我不能識別上面提到的任何語法錯誤。請幫助我,我做錯了什麼?提前致謝。
哪個版本的VS? – Angew
在VS2010上編譯得很好。 – Asha
這是整個標題嗎?我敢打賭,必須有一些額外的代碼,例如標頭警衛或包含指令。你給出的代碼編譯得很完美(在包含''或另一個定義'NULL'的頭文件後),所以這個問題必須在你沒有發佈的代碼中。我敢打賭,你會在'Node'之前包含的類定義之後忘記了一個分號,但這是一個瘋狂的猜測。 –