首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

初学C++程序有关问题

2012-02-17 
初学C++程序问题#includeiostream.hclassset{private:intnumintdata[100]public:set(intn0){numn}/

初学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;
}

热点排行