C++写顺序表出现error LNK2001: unresolved external symbol,该如何处理

C++写顺序表出现error LNK2001: unresolved external symbol
#include<iostream.h>
const int defaultSize =100;
template <class T>


class SeqLink  
{
protected:
T* data;
int maxSize;
int n;
void reSize(int newSize);
public:
SeqLink(int sz = defaultSize);
SeqLink(SeqLink<T>& L);
virtual ~SeqLink();
int size() const;
int length() const;
bool getDate(int i,T& x);
void setDate(int i,T& x);
int search(T& x) const;
int locate(int i) const;
bool insert(int i,T& x);
bool remove(int i,T& x);
void input();
bool isEmpty() const;
bool isFull() const;
void output();
void sort();
}

#include "SeqLink.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
template <class T>
SeqLink<T>::SeqLink(int sz)
{
maxSize = sz;
last =-1;
data = new T[maxSize];
if(data ==NULL)
{
ceer<<"线性表存储分配失败!"<endl;
exit(1);
}
}

template <class T>
SeqLink<T>::~SeqLink()
{
delete[] data;

}

template <class T>
SeqLink<T>::SeqLink(SeqLink<T>& L)
{
maxSize = L.size();
n=L.length();
data = new T[maxSize];
if(data==NULL)
{
ceer<<"线性表存储分配失败!"<endl;
exit(1);
}
for(int i =1;i<=n;i++)
{
L.getData(i,value);
data[i-1]=value;
}
}

template <class T>
int SeqLink<T>::size() const
{
return maxSize;
}

template <class T>
int SeqLink<T>::length() const
{
return n;
}

template <class T>
bool SeqLink<T>::getDate(int i,T& x)
{
if(i>=1&&i<=n)
{
x=data[i-1];
return true;
}
return false;
}

template <class T>
void SeqLink<T>::setDate(int i,T& x)
{
if(i>=1&&i<=n)
data[i] = x;
}

template <class T>
int SeqLink<T>::search(T& x) const
{
for(int i=0;i<n;i++)
{
if(date[i]==x)
{
return i+1;
}
else return 0;
}
}

template <class T>
int SeqLink<T>::locate(int i) const
{
if(i>=1&&i<=n) return i;
else return 0;
}

template <class T>
bool SeqLink<T>::insert(int i,T& x)
{
if(last==maxSize-1||i<0||i>last+1) 
return false;
for(int j=last;j>=i;j--)
data[j+1]=data[j];
data[i] = x;
last++;
return true;
}

template <class T>
bool SeqLink<T>::remove(int i,T& x)
{
if(isEmpty()) return false;
if(i>=1&&i<=n)
{
x=data[i-1];
for(int k=i;k<=n;k++)
data[j-1]=data[j];
last--;
return true;
}
else return false;
}

template <class T>
void SeqLink<T>::input()
{
cout<<"请输入表中元素个数:";
int count;
cin<<count;
this->n = count;
if(n<=maxSize)
{
for(int i=1;i<n;i++)
{
cout<<"第"<<i<<"个元素:";
cin>>data[i-1];
cout<<i<<endl;
}
}
else cout<<"表元素个数输入有误,范围不超过"<<maxSize<<endl;
}

template <class T>
void SeqLink<T>::output() 
{
for(int i=0;i<last;i++)
cout<<i<<"->"<<data[i]<<endl;