2013-01-19 60 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

不可以。您的标题中包含类**声明**。对于模板化的模板,这对于常规类位来说已经足够了,您还必须将定义放在那里。 –