2013-01-19 132 views
0

我對使用多文件有點新。我有這個非常簡單的代碼鏈接列表,但是當我調試時,它「停止工作」。帶多文件的C++鏈接列表

這個問題幾次發生在我之前。我想知道我的「鏈接列表」代碼有什麼問題嗎?或者多文件組織有問題?

任何幫助將不勝感激。

======================================

//linkedListMAIN.cpp 

#include "linkedlist.cpp" 

void main() 
{ 
linkList<int> l; 

l.append(5); 
l.traverse(); 
} 

= =====================================

//linkedList.h  

#include<iostream> 
using namespace std; 

template <class T> 
class linkList 
{ 
private: 
struct node 
{ 
    T data; 
    node *next; 
}; 
node *head; 
node *tail; 
int noOfEl; 
public: 
linkList() 
{ 
    noOfEl = 0; 
    head=tail=NULL; 
} 

void traverse(); 
int length(); 
void insertAt(T, int); 
T delAt(int); 
void append(T); 
void clear(); 
}; 

====== ================================

//linkedList.cpp  
#include "linkedlist.h" 

template <class T> 
void linkList<T>:: traverse() 
{ 
node<T> *current=head; 

if(head == NULL) 
{ 
    cout<<"List empty."<<endl; 
} 

while(current != NULL) 
{ 
    cout<<current->data; 
    current = current->next; 
} 
} 


template <class T> 
void linkList<T>::append(T data) 
{ 
node< *newNode= new node; 

newNode->next = NULL; 
tail->next = newNode; 
tail = newNode; 

noOfEl++; 
} 
+0

包括主鏈接中的「linkedlist.h」 – woryzower

+1

'new'的數目是1,'delete'的數目是0。出錯了! – Lol4t0

+0

這是一個學習練習嗎?否則使用std:list。 –

回答

2

你不應該包括在.cpp但inkedListMAIN.cpp標題(.h)。另外,除非您使用c++11,否則您必須將模板類的類定義放在標題中。

+0

我確實在頭文件中有類定義。 – user1910524

+1

不可以。您的標題中包含類**聲明**。對於模板化的模板,這對於常規類位來說已經足夠了,您還必須將定義放在那裏。 –