我可以将友元函数/类的定义放在另一个类中吗?我的意思是这样的:
class Foo
{
friend void foo() {} // 1
friend class Bar {}; // 2
};
Run Code Online (Sandbox Code Playgroud)
gcc编译好友函数,但无法编译好友类.
您可以在友元声明中定义一个friend函数,它具有无法以任何其他方式获取的有趣行为(在封闭类型为模板的情况下).
你不能在朋友声明中定义一个friend类,也没有必要.如果要创建具有完全访问权限的内联新类型,则只需创建嵌套类型即可.作为会员,它将完全访问封闭类型.唯一的区别是在命名空间级别找不到类型,但是如果需要可以添加typedef(或者,在命名空间级别定义类,只是声明类中的友谊).
class Outer {
int x;
class Inner {
static void f( Outer& o ) { o.x = 5; } // fine
};
};
Run Code Online (Sandbox Code Playgroud)