高手请进,C++成员数据len怎么老不会加1

来源:百度知道 编辑:UC知道 时间:2024/06/23 13:38:53
#include<iostream.h>
#include<stdlib.h>
class setclass
{
public:
setclass(int ms=5);
bool insertset(int item);
bool deleteset(int item);
bool findset(int& item);
bool modifyset(const int& item);
bool inset(int item);
bool emptyset();
int lenthset();
void outputset();
setclass* unionset(setclass& s2);
setclass* interseset(setclass& s2);
~setclass();
private:
int *set;
int len;
int maxsize;
};
setclass::setclass(int ms)
{
if(ms<=0)
{
cout<< "ms值非法!"<<endl;exit(1);
}
maxsize=ms;
set=(int*)malloc(ms*sizeof(int));
len=0;
}
bool setclass::insertset(int item)
{
int i;
for(i=0;i<len;i++)
if(set[i]=item) return false;
if(len==maxsize)
{
int *p=(int*)realloc(set,2*maxsize*sizeof(int));
set=p;
maxsize=2*maxsize;
}

这个函数有问题,请看注解:
bool setclass::insertset(int item)
{
int i;
for(i=0;i<len;i++)
if(set[i]=item) return false; //这里少了一个=号,应改为if(set[i]==item) return false;
if(len==maxsize)
{
int *p=(int*)realloc(set,2*maxsize*sizeof(int));
set=p;
maxsize=2*maxsize;
}
set[len]=item;
if(set[len]==item) len++;
return true;
}

for(i=0;i<8;i++)
{
a.insertset(c1[i]);
a.outputset();
}
没有加括号,当然只会输出一个

delete []set;
是delete set[]吧