C++ 模板的问题

如果一个含有模板的类声明在 .h 头文件里,如:

 

#ifndef SEQLIST_H_ #define SEQLIST_H_ #include <stdlib.h> #include <iostream> using namespace std; //typedef int T; template <class T> class SeqList { protected: T *list; int maxSize; int size; public: SeqList(int max=0); ~SeqList(); int Size()const; void Insert(const T& item,int i); T Delete(const int i); T GetData(int i)const; };

 

 那么实现的部分也要放入头文件里,否则找不到的实现的:

以下部分也要放在头件里:

 

template <class T> SeqList<T>::SeqList(int max){ maxSize=max; size=0; list=new T[max]; } template <class T> SeqList<T>::~SeqList(){ delete []list; } template <class T> int SeqList<T>::Size()const{ return size; } template <class T> void SeqList<T>::Insert(const T& item,int i){ if(size==maxSize) { cout<<"顺序表已满,无法插入!"<<endl; exit(0); } if(i<0||i>size){ cout<<"参数i越界出错!"<<endl; exit(0); } for(int j=size;j>i;j--) list[j]=list[j-1]; list[i]=item; size++; } template <class T> T SeqList<T>::Delete(const int i){ if(size==0) { cout<<"顺序表已空,无法删除!"<<endl; exit(0); } if(i<0||i>size-1){ cout<<"参数i越界出错!"<<endl; exit(0); } T x=list[i]; for(int j=i;j<size-1;j++) list[j]=list[j+1]; size--; return x; } template <class T> T SeqList<T>::GetData(int i)const{ if(i<0||i>size-1){ cout<<"参数i越界出错!"<<endl; exit(0); } return list[i]; } #endif /* SEQLIST_H_ */

你可能感兴趣的:(C++ 模板的问题)