首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-04-06 
C++写顺序表出现error LNK2001: unresolved external symbol#includeiostream.hconst int defaultSize

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;


}

template <class T>
bool SeqLink<T>::isEmpty() const
{
return last==-1?true:false;
}

template <class T>
bool SeqLink<T>::isFull() const
{
return last==maxSize-1?true:false;
}

template <class T>
void SeqLink<T>::sort()
{
for(int i =0;i<last;i++)
{
int pos;
for(int j=i;j<last;j++)
if(data[i]<data[j])
pos = j;
if(i!=pos)
{
int temp = data[pos];
data[pos] =data[i];
data[i] = temp;
}
}
}



#include "SeqLink.h"


void main()
{
SeqLink<int> seq(150);
seq.input();
seq.output();
}



main.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall SeqLink<int>::~SeqLink<int>(void)" (??1?$SeqLink@H@@UAE@XZ)
main.obj : error LNK2001: unresolved external symbol "public: void __thiscall SeqLink<int>::output(void)" (?output@?$SeqLink@H@@QAEXXZ)
main.obj : error LNK2001: unresolved external symbol "public: void __thiscall SeqLink<int>::input(void)" (?input@?$SeqLink@H@@QAEXXZ)
main.obj : error LNK2001: unresolved external symbol "public: __thiscall SeqLink<int>::SeqLink<int>(int)" (??0?$SeqLink@H@@QAE@H@Z)
Debug/SeqLink.exe : fatal error LNK1120: 4 unresolved externals

[解决办法]
SeqLink.h 把实现和定义写在一个文件,不要分离编译

热点排行