【问题标题】:Friend c++ not working with private members朋友 c++ 不与私人成员一起工作
【发布时间】:2018-05-15 11:55:41
【问题描述】:

我试图在两个班级之间建立朋友关系。以下是示例:

class A
{
public:
  int b;
private:
  friend class B;
  int a;
};

class B
{
  public:
  A abc;
};

int main ()
{
  B b;
  b.abc.b = -1;
  b.abc.a = 0;
  return 0;
}

编译时出现如下错误:

test.cpp:在函数“int main()”中:test.cpp:20:9:错误:“int A::a” 在此上下文中是私有的 b.abc.a = 0; ^ test.cpp:7:7: 注意:这里声明为私有 int a; ^

任何帮助将不胜感激。

【问题讨论】:

  • BA 的朋友,而不是main

标签: c++ friend


【解决方案1】:

friend 允许 code 访问其他无法访问的名称。但是,访问成员a的代码在main中,而不是在B类中,所以它没有特殊的访问权限。

你需要这样的东西:

class B
{
  public:
  A abc;

  void set_abc_a(int i) { abc.a = i; }
};

int main ()
{
  B b;
  b.abc.b = -1;
  b.set_abc_a(0);
  return 0;
}

【讨论】:

    猜你喜欢
    • 2022-11-13
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多