我知道这已被问过好几次,但我真的无法从其他问题中找到解决方案。
所以,我对于为什么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];
你知道为什么吗?我似乎经常遇到这个错误