朋友ostream无法访问私人会员

时间:2016-01-10 22:59:38

标签: c++ overloading private member ostream

我知道这已被问过好几次,但我真的无法从其他问题中找到解决方案。

所以,我对于为什么ostream运算符<<无法访问我班级的私人部分,即使它是朋友

这是班级

#include <iostream>
#include <fstream>
#include <string>

using namespace std;
const int MAX=5;
struct elem { char info [21];
              elem* pun; 
       };


class Bosco {

    elem* v[MAX];

public:
       Bosco();
       Bosco& pianta(const char*, int);
       bool elimina_vecchio(const char*, int);
       friend ostream& operator<<(ostream&, const Bosco&); 

};

这就是问题所在

ostream& operator<<(ostream& os, const Bosco& b) {
elem* p;
for(int i=0; i < MAX; i++){
   p = b.v[i];
   os << '[' << i + 1 << "] ";
   while(p!=NULL) {
      os << p->info;
      if (p->pun != NULL)
         os << ", ";
       p = p->pun; 
     } 
     os << endl;  
  }  
return os;
}

错误说fila * Bosco :: v [5]是私有的,所以我的超载无法访问 p = b.v [i];

你知道为什么吗?我似乎经常遇到这个错误

0 个答案:

没有答案