初学C++程序问题
#include <iostream.h>
class set
{
private:
int num;
int data[100];
public:
set(int n=0){num=n;} //构造函数,默认n=0
void set_setnum(); //设置集合个数num的函数
void set_setdata(); //设置集合中的元素data
void insert(int e); //在集合中添加一个元素e
int length(){return num;} //返回集合的个数(元素的个数)
int getelem(int i); //返回集合中第i个元素
void print(); //输出集合中的所有元素
ostream & operator < <(ostream &); //函数成员重载 < < 运算符,实现集合的输出
};
...........
ostream & set::operator < <(ostream &output)
{
output < < "{ ";
for(int i=0;i <num;i++)
{output < <data < < ", ";}
output < < "} " < <endl;
return output;
}
int main()
{
set s1,s2,s3;
s1.set_setnum();
s1.set_setdata();
s2.set_setnum();
s2.set_setdata();
cout < <s1;
return 0;
}
编译时 cout < <s1; 这语句会出错 这是怎么了 懂的帮忙解答一下
[解决办法]
使用友元函数吧!
在class set里面指定友元:
friend ostream & operator < <(ostream &, set &);
在外面定义友元函数:
ostream & operator < <(ostream &output, set &s)
{
output < < "{ ";
for(int i=0;i <s.num;i++)
{output < <s.data[i] < < ", ";}
output < < "} " < <endl;
return output;
}