C++友元函数访问问题

新手上路,请多包涵

题目描述

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函数?

阅读 1.2k
1 个回答

class B;
class A...
在class A前面声明一下class B; 否则A不认识B是什么东西

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题