【问题标题】:Are friends in c++ mutual? [duplicate]c++中的朋友是相互的吗? [复制]
【发布时间】:2010-10-13 08:20:39
【问题描述】:

可能重复:
Friend scope in C++

C++ 中的朋友是相互的吗?

【问题讨论】:

  • 就像在现实生活中一样:存在单向关系,即使你认为它们是相互的 :)
  • 这个问题让我笑了:D
  • Friend 已经是一个有问题的结构,从访问的角度来看可能会导致代码不整洁。至少以一种方式降低保护受到损害的程度

标签: c++ syntax


【解决方案1】:
class bar
{
private:
   void barMe();
};

class foo
{
private:
   void fooMe();

friend bar;
};

在上面的例子中 foo 类不能调用 barMe() 您需要以这种方式定义类以便朋友是相互的:

class foo; // forward
class bar
{
private:
   void barMe();

friend foo;
};

class foo
{
private:
   void fooMe();

friend bar;
};

【讨论】:

  • 感谢您的回答和耐心等待!
【解决方案2】:

一般来说,朋友关系只是单向的——但没有什么可以阻止你声明 A 类是 B 类的朋友,B 类是 A 类的朋友。所以可以建立相互关系

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    • 2015-10-21
    • 1970-01-01
    • 2013-10-08
    • 2010-12-27
    相关资源
    最近更新 更多