具体可看thinking C++ 45~47页:
1:
注意到应该在面先声明一下 struct A;
之后虽然没有struct A 的定义,但是可以用他的地址作为参数传入要被友元的函数中: Y::f(X*)
应为地址大小是一定的。
2: 再类内部声明的结构体(类),如果不声明为类的友元,是无法访问其私有成员变量的。