#include
using namespace std;
class X;
class Y
{
public :
void g(X*p1);
};
class X
{
public:
X(int x=0)
{
i=x;
}
int geti()
{
return i;
}
friend class Z;
// friend class Y;
friend void Y::g(X*p1);
friend int h(X*p3);
private:
int i;
};
void Y::g(X*p1)
{
p1->i=p1->i+1;
//这里引用了类的私有成员 i ,需要将其放在类X的定义之后(若放在类Y和类X的定义之间,
//会报错)。
//类Y的成员函数g设置为友元,主要是为了访问类X的成员。
}
class Z
{
public:
int f(X*p2)
{
(*p2).i=(*p2).i+5;
}
int h(X*p3)
{
p3->i=p3->i+ 10;
}
};
int main()
{
X x(3);
cout<<x.geti()<<endl;
Y y;
y.g(&x);
cout<<x.geti()<<endl;
Z z;
z.f(&x);
cout<<x.geti()<<endl;
}
这样就没有错误了