我试图在两个班级之间建立朋友关系。以下是示例:
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; ^
非常感谢任何帮助。
答案 0 :(得分:5)
friend
允许代码访问其他无法访问的名称。但是,访问成员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;
}