该程序是用友元函数实现集合类,可是有错误,请高手指点一下啊
#include<iostream>
using namespace std;
class Set{
//friend setA(Set &s,int n);
private:
int arr[100];
int count;
public:
void print();
Set() {count=0;}
~Set();
friend void addint();
friend int subint();
friend set operator +(const Set &s);
friend set operator *(const Set &s);
friend bool operator &(int m,Set &s);
};
void addint()
{
int k,t;
float element;
cout<<"请输入要加入到集合A中的元素:"<<endl;
cin>>element;
for(k=0;k<100;k++)
{
if(arr[k]!=element) t=0;
else {t=1;break;}
}
if(t==0) arr[count++]=element;
else cout<<"集合A中已有此元素:"<<endl;
print();
}
void subint()
{
int element,i;
cout<<"请输入要删除的元素:"<<endl;
cin>>element;
for(i=0;i<100;i++)
{
if(arr[i]==element)
for(;i<100;i++)
arr[i]=arr[i+1];
else
cout<<"您要删除的数不存在"<<endl;
}
}
Set operator+(const Set &s)
{
int m,n,i=0,j,k,t;
Set temp;
m=strlen(arr);
n=strlen(s.arr);
for(j=0;j<n;j++)
{
for(k=0;k<m;k++)
{
if(arr[k]!=s.arr[j]) t=0;
else {t=1;break;}
}
if(t==1)
{
temp.arr[i]=arr[k-1];
i++;
}
}
return temp;
}
void Set::print()
{
cout<<arr<<endl;
}
Set operator*(const Set &s)
{
int m,n,i,j,k,t;
Set temp;
m=strlen(arr);
n=strlen(s.arr);
for(i=m+1,j=0;j<0;i++,j++)
{
for(k=0;k<=m;k++)
{
if(arr[k]!=s.arr[j]) t=0;
else {t=1;break;}
}
if(t==0) arr[i]=s.arr[j];
}
return temp;
}
bool operator &(int m,Set &s)
{
int i;
float element;
for(i=0;i<s.count;++i)
if(s.element[i]==element)
return true;
return false;
}
void main()
{
Set A;
Set B;
Set C=A+B;
C.print();
C=A*B;
C.print();
C=A&B;
C.print();
}
[解决办法]
这两个函数至少需要一个参数吧?第二个返回的型和定义返回的类型不一样
friend void addint();
friend int subint();
如:
friend void addint(Set& lhs); 才可以在函数里面已lhs.成员名的形式访问成员
这两个没必要搞成友元,非要搞的话应该需要两个参数才对,这样你叫s要和谁运算呢?
friend set operator +(const Set &s);
friend set operator *(const Set &s);