我有 2 个类,如下面的虚拟类
class CA
{
private:
class Impl;
};
class Cb
{
private:
friend class CA::Impl;
}
这段代码给我编译错误,指出类 CA::Impl 是私有(private)的。真的不可能为嵌套的私有(private)类(class)建立友元吗?我还能做些什么来实现这种语义?
最佳答案
你、亚当和史蒂夫
想象一下,有一位名叫 Adam Stackie 的名人,他有一个名叫 Steve 的 friend 。
如果你知道关于 Adam 的某些事情,即使你不是他的 friend ,只是假设你和 Steve 足够亲密你在公共(public)场合抓他?
类不是隐含的 friend 的 friend ,也不是隐含的可以触及某些部分的事物的 friend 。
稍微严肃一点
要使您的代码段正常工作,您要么必须
- 让
Cb
成为CA
的好友,方法是在CA
, 或者; - 公开
CA::Impl
,或者; - 以任何其他方式确保
Cb
可以捕获CA::Impl
。
关于C++与嵌套私有(private)类的友元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24021392/