朋友 c++ 不与私人成员一起工作
Posted
技术标签:
【中文标题】朋友 c++ 不与私人成员一起工作【英文标题】:Friend c++ not working with private members 【发布时间】: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; ^
任何帮助将不胜感激。
【问题讨论】:
B
是A
的朋友,而不是main
。
【参考方案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;
【讨论】:
以上是关于朋友 c++ 不与私人成员一起工作的主要内容,如果未能解决你的问题,请参考以下文章