????friend关键字
#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; }