#include "stdafx.h"
#include <iostream>
using namespace std;
//A里面有个private的变量,需要被其他的如
//全局函数g(A *a)、h()、结构体C、结构体中的某个函数B::f(A *a)访问
struct A;
struct B{
void f(A *a); //这里用到了A,那么前面必须前面有A的声明
};
struct A{
private:
int i;
public:
void ini();
friend void g(A *a); //在这里声明也是算数的,算是全局的声明,因此g和h可以写在下面
friend void h();
friend struct C; //这个表明在C的任何一个函数内都可以访问到
friend void B::f(A *a); //这里必须事先有该函数声明才行,因此B的结构体定义前移
};
void B::f(A *a){
cout<<"B::f gets the value: "<<a->i<<endl;
}
void A::ini(){
i=20;
}
void g(A *a){
cout<<"g gets the value: "<<a->i<<endl;
}
void h(){
A a;
a.i=10;
cout<<"can new an A in h: "<<a.i<<endl;
}
struct C{
};
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}