题目描述
C++友元函数访问失败的问题
题目来源及自己的思路
看代码
相关代码
粘贴代码文本(请勿用截图)
class A {
friend ostream& operator<<(ostream&, const B&);
friend B;
protected:
void print(ostream& o) const { o << "1"; }
};
class B {
A* a;
friend ostream& operator<<(ostream& , const B&);
};
ostream& operator<<(ostream& o, const B& b) {
b.a->print(o); // 这一行编译出错,说访问不了
return o;
}
你期待的结果是什么?实际看到的错误信息又是什么?
我已将operator函数和类B设置成类A的友元了,为什么在operator函数里还是不能访问print函数,请问哪里出了问题?我知道如果把print()函数的访问权限改为public即可正常编译,但是我想保证访问权限不变的情况下,如何做到调用print函数?
class B;
class A...
在class A前面声明一下class B; 否则A不认识B是什么东西