今天刚接触类的友元编写了这样一段程序,错误很多。还望大神指教

题目:定义类X,Y,Z,函数h(X *),满足:类X有私有成员i,Y的成员函数g(X *)是X的友元函数,实现对x的成员i加1,类z是类X的友元类,其成员函数f(X *)实现对X成员i加5,函数h(X  *)是X的友元函数,实现对x的成员i加10.用结构文件来写。

//l类的定义

#include<iostream>
using namespace std;

class X
{
public:
X();
friend void h(X *);
friend void g(X *);
friend class Z;
private:
static int i;
};

class Y
{
public:
void g(X *);
};

class Z
{
public:
void f(X *);
};

void h(X *);


//类的实现

#include"fri_cla_def.h"

void h(X *x)
{
  x->i+=1;
}

void Y::g(X *x)
{
  x->i+=10;
}

void Z::f(X *x)
{
 x->i+=5;
}


//主函数

#include"fri_cla_def.h"

void main()
{

}