C++ error C2065: undeclared identifier

#include<iostream>usingnamespacestd;constintMaxsize=100;template<classdatatype>classS... #include<iostream>
using namespace std;
const int Maxsize=100;
template<class datatype>
class SeqList
{
public:
SeqList( );
SeqList(datatype a[],int n);
~SeqList(){};
int Length();
datatype Get(int i);
void Insert(int i,datatype item);
datatype Delete(int i);
void display();
private:
datatype data[Maxsize];
int length;
};
template<class datatype>
SeqList<datatype>::SeqList( )
{
length=0; }
template<class datatype>
SeqList<datatype>::SeqList(datatype a[],int n)
{
if(n>Maxsize)throw"表长度n不合法";
for(int i=0;i<n;i++)
data[i]=a[i];
length=n;
}
template<class datatype>
void SeqList<datatype>::Insert(int i,datatype item)
{
int j;
if(length>=Maxsize)throw"表满";
if(i<0||i>length)throw"位置i不合法";
for(j=length;j>=i;j--)
data[j]=data[j-1];
data[i-1]=item;
length++;
}
template<class datatype>
datatype SeqList<datatype>::Delete(int i)
{
int j;
datatype item;
if(length==0)throw"表为空";
if(i<1||i>length)throw"i不合法";
item=data[i-1];
for(j=i;j<=length;j++)
data[j-1]=data[j];
length--;
return item;
}
template<class datatype>
void SeqList<datatype>::display()
{
for(int i=0;i<length;i++)
cout<<data[i]<<" ";
cout<<endl;
}
template<class datatype>
int SeqList<datatype>::Length()
{
return length;
}
template<class datatype>
datatype SeqList<datatype>::Get(int i)
{
if(i<0||i>length)throw"i不合法";
else return data[i-1];
}
void main()
{
int i,j;
int a[5]={1,2,3,4,5};
SeqList<int>myList1(a,5);
myList1.display();
int b[5]={3,4,5,6,7};
SeqList<int>myList2(b,5);
myList2.display();
for(i=0;i<length;i++)
for(j=0;j<length;j++)
if(myList1.Get(i)==myList2.Get(j))
Delete j;
for(i=length,j=0;j<=length;i++,j++)
myList1.Insert(i,myList2.Get(j));
cout<<"A∪B的结果为:"<<myList1.display()<<endl;
}

错误是:
error C2065: 'length' : undeclared identifier
error C2065: 'Delete' : undeclared identifier
error C2146: syntax error : missing ';' before identifier 'j'
error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'void' (or there is no acceptable conversion)

为什么?
展开
 我来答
kingfeng588
2013-04-12 · TA获得超过2494个赞
知道大有可为答主
回答量:1475
采纳率:50%
帮助的人:1795万
展开全部
修改后:另外你的算法还有问题。

#include<iostream>
using namespace std;
const int Maxsize=100;
template<class datatype>
class SeqList
{
public:
SeqList( );
SeqList(datatype a[],int n);
~SeqList(){};
int Length();
datatype Get(int i);
void Insert(int i,datatype item);
datatype Delete(int i);
void display();
private:
datatype data[Maxsize];
int length;
};
template<class datatype>
SeqList<datatype>::SeqList( )
{
length=0; }
template<class datatype>
SeqList<datatype>::SeqList(datatype a[],int n)
{
if(n>Maxsize)throw"表长度n不合法";
for(int i=0;i<n;i++)
data[i]=a[i];
length=n;
}
template<class datatype>
void SeqList<datatype>::Insert(int i,datatype item)
{
int j;
if(length>=Maxsize)throw"表满";
if(i<0||i>length)throw"位置i不合法";
for(j=length;j>=i;j--)
data[j]=data[j-1];
data[i-1]=item;
length++;
}
template<class datatype>
datatype SeqList<datatype>::Delete(int i)
{
int j;
datatype item;
if(length==0)throw"表为空";
if(i<1||i>length)throw"i不合法";
item=data[i-1];
for(j=i;j<=length;j++)
data[j-1]=data[j];
length--;
return item;
}
template<class datatype>
void SeqList<datatype>::display()
{
for(int i=0;i<length;i++)
cout<<data[i]<<" ";
cout<<endl;
}
template<class datatype>
int SeqList<datatype>::Length()
{
return length;
}
template<class datatype>
datatype SeqList<datatype>::Get(int i)
{
if(i<0||i>length)throw"i不合法";
else return data[i-1];
}
void main()
{
int i,j;
int a[5]={1,2,3,4,5};
SeqList<int>myList1(a,5);
myList1.display();
int b[5]={3,4,5,6,7};
SeqList<int>myList2(b,5);
myList2.display();
for(i=0;i<myList1.Length();i++)// length修改为myList1.Length()
for(j=0;j<myList2.Length();j++)// length修改为myList2.Length()
if(myList1.Get(i)==myList2.Get(j))
myList2.Delete(j);//Delete j;修改为 myList2.Delete(j);
for(i=myList1.Length(),j=0;j<=myList2.Length();i++,j++)// length修改为myList1.Length()
myList1.Insert(i,myList2.Get(j));
cout<<"A∪B的结果为:"<<endl;
myList1.display();
}
更多追问追答
追问
那你能帮我改一下么?谢谢
追答
void SeqList::Insert(int i,datatype item)
{
int j;
if(length>=Maxsize)throw"表满";
if(ilength)throw"位置i不合法";
for(j=length;j>i;j--)//=i修改为i
data[j]=data[j-1];
data[i]=item;//i-1修改为i
length++;
}
template
datatype SeqList::Delete(int i)
{
int j;
datatype item;
if(length==0)throw"表为空";
if(ilength)throw"i不合法";
item=data[i]; // i-1修改为i
for(j=i;j
void SeqList::display()
{
for(int i=0;i
int SeqList::Length()
{
return length;
}
template
datatype SeqList::Get(int i)
{
if(ilength)throw"i不合法";
else return data[i];//i-1修改为i
}
void main()
{
int i,j;
int a[5]={1,2,3,4,5};
SeqListmyList1(a,5);
myList1.display();
int b[5]={3,4,5,6,7};
SeqListmyList2(b,5);
myList2.display();
for(i=0;i<myList1.Length();i++)// length修改为myList1.Length()
{
for(j=0;j<myList2.Length();)// length修改为myList2.Length()
{
if(myList1.Get(i)==myList2.Get(j))
{
myList2.Delete(j);//Delete j;修改为 myList2.Delete(j);
}
else
{
j++;
}
}
}
for(i=myList1.Length(),j=0;j<myList2.Length();i++,j++)// =length修改为myList1.Length()
{
myList1.Insert(i,myList2.Get(j));
}
cout<<"A∪B的结果为:"<<endl;
myList1.display();
}
牛顿一餐一顿牛
2013-04-12 · TA获得超过638个赞
知道小有建树答主
回答量:287
采纳率:0%
帮助的人:216万
展开全部
调用成员函数和数据成员 的方法为:
对象.成员函数 对象.数据成员
你数据成员为私有,可以通过公用的成员函数来调用
应该这样myList1.Length()
myList2.Length()

myList1.Delete()或者myList2.Delete()

最后输出改为
cout<<"A∪B的结果为:";
myList1.display();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chobychen12345
2013-04-13
知道答主
回答量:6
采纳率:0%
帮助的人:8914
展开全部
1、for循环中的length没有定义
2、Delete,应该是delete,C++中区分大小写
3、int ij;没有逗号
4、myList1.display是无返回的(void),所以不能用cout输出
追问
length该怎么定义?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式