+ -
当前位置:首页 → 问答吧 → c++程序错误

c++程序错误

时间:2011-12-18

来源:互联网

error LNK2001: unresolved external symbol "public: virtual int __thiscall dataList<int,int>::SeqSearch(int)const " (?SeqSearch@?$dataList@HH@@UBEHH@Z)
那个SeqSearch()函数在后面有定义,然后不知道这是为什么错了,求各位高手指教!!

作者: dfafe   发布时间: 2011-12-18

把代码贴上来

作者: shenxinji   发布时间: 2011-12-18

在后面定义的函数,使用前有没有函数声明?

作者: nuaazdh   发布时间: 2011-12-18

search.h
#include <iostream>
using namespace std;
#include <assert.h>
const int defaultSize=100;
template<class E,class K>
class dataList; //数据表的前视定义


template<class E,class K>
class dataNode //数据表中结点类的定义
{
  friend class dataList<E,K>;//申明友元类为dataList
public:
dataNode(const K x):key(x){}//构造函数
K getKey()const {return key;}//读取关键码
void setKey(K k){key=k;}//修改关键码
K key;//关键码
};

template<class E,class K>
class dataList //数据表类定义
{
public:
  dataList(){}
dataList(dataList<E,K>& R);//复制构造函数
virtual ~dataList(){delete []Element;}
int Length(){return CurrentSize;}//求表的长度
virtual K getKey(int i)const//提取第i个元素值
{assert(i>0||i<=CurrentSize);return Element[i-1].key;}
virtual void setKey(K x,int i)//修改第i个元素值
{assert(i>0||i<=CurrentSize);Element[i-1].key=x;}
virtual int SeqSearch(const K x)const;//搜索
public:
dataNode<E,K> *Element;
int ArraySize,CurrentSize;
};
template<class E,class K>
class searchList:public dataList<E,K>//公有继承,增加成员函数
{
public:
searchList(){}
int SeqSearch(K x)const;
friend ostream& operator<<(ostream& out,const dataList<E,K>& OutList);
friend istream& operator>>(istream& in,dataList<E,K>& InList);
};
template<class E,class K>
int searchList<E,K>::SeqSearch(K x) const
{
Element[CurrentSize].key=x;
int i=0;
while(Element[i].key!=x) i++;
return i+1;
};
template<class E,class K>
ostream& operator<<(ostream& out,const dataList<E,K>& OutList)
{
out<<"Array Contents:"<<endl;
for(int i=1;i<=OutList.CurrentSize;i++)
out<<OutList.Element[i-1].key<<' ';
out<<endl;
out<<"Array Current Size:"<<OutList.CurrentSize<<endl;
return out;
};
template<class E,class K>
istream& operator>>(istream& in,dataList<E,K>& InList)
{
cout<<"Enter array Current Size:";
in>>InList.CurrentSize;
cout<<"Enter array elements:"<<endl;
for(int i=1;i<=InList.CurrentSize;i++)
{cout<<"Element"<<i<<":";in>>InList.Element[i-1].key;}
return in;
};
main.cpp
#include <iostream>
using namespace std;
#include "search.h"
const int Size=10;
void main()
{
searchList<int,int> L1;
int Target;int Location;
cin>>L1;cout<<L1;
cout<<"Search for a integer:";
cin>>Target;
if((Location=L1.SeqSearch(Target))!=L1.Length())
cout<<"Found at index"<<Location<<endl;
else
cout<<"Not Found"<<endl;
}

就是这些,可以帮我看下吗?

作者: dfafe   发布时间: 2011-12-18

virtual int SeqSearch(const K x)const;//搜索 
改成:
virtual int SeqSearch(const K x){return 0;}//搜索

作者: agoago_2009   发布时间: 2011-12-18

dataList类的函数
virtual int SeqSearch(const K x)const;//搜索
没有实现

作者: hui12345685   发布时间: 2011-12-18