读书人

C++程序有关问题谁帮小弟我改改下面

发布时间: 2012-04-10 21:03:56 作者: rapoo

C++程序问题,哪位高手帮我改改下面的C++程序问题。
错误提示: error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'struct Set' (or there is no acceptable conversion)



#include <iostream.h>

#define SETSIZE 6

typedef struct Set
{
int m[SETSIZE + 1];
}Set;

void InitSet(Set &s);
void InitSet(Set &s, int a[], int n);
Set operator + (Set &s1, Set &s2);

int main()
{
int x[3] = {1,4,5};
int y[2] = {2,4};
Set s,s1,s2;

InitSet(s1);
InitSet(s2);

InitSet(s1, x, sizeof(x)/sizeof(int));
InitSet(s2, y, sizeof(y)/sizeof(int));

s = s1 + s2; //问题出在这边,但我不知道怎么改
cout<<s<<endl;

return 0;
}


void InitSet(Set &s)
{
for (int i=1; i<=SETSIZE; i++)
{
s.m[i] = 0;
}
}

void InitSet(Set &s, int a[], int n)
{
for (int i=0; i<n; i++)
{
s.m[a[i]] = 1;
}
}

Set operator + (Set &s1, Set &s2)
{
Set stmp;
InitSet(stmp);
for (int i=0; i<SETSIZE+1; i++)
{
stmp.m[i] = s1.m[i] || s2.m[i];
}
return stmp;
}

[解决办法]
Set没有定义operator+和operator<<。

读书人网 >C++

热点推荐