【发布时间】:2018-10-27 06:04:06
【问题描述】:
例如,假设我编写了这样的代码:
class A
{
private:
class B
{
private:
int a;
friend int A::foo(B &b);
};
int foo(B &b)
{
return b.a;
}
};
由于B 中的a 是私有的,因此要在A 的函数foo 中使用a,我将使用friend,以便foo 可以实际访问a。
但是,此代码给出了无法访问a 的错误。代码有什么问题,我应该如何更改代码同时保持a 私有且A 不是B 的朋友?还是有更好的办法?
【问题讨论】:
-
“和 A 不是 B 的朋友”你的意思是 B 不是 A 的朋友?我很确定这是不可能的,因为您需要事先完整定义 A 或 B。
-
a在class B内部是私有的。要访问类的私有成员,您可能需要class B中的公共方法,例如int get_a() { return a; }。
标签: c++ class oop c++11 friend