类的静态函数无法调用其它静态函数替静态成员赋值

类的静态函数无法调用其它静态函数为静态成员赋值
直接上源码,省点时间。问题在题目和注释里面。麻烦各位了,谢谢了先!

.h文件:

class CToy
{
public:
CToy() ;
~CToy() ;

void GetInt( int i ) ; //为下面的整树成员m_Int赋值

static void GetEf( float Ef , float f ) ;//为浮点成员赋值的方法
static void GetAllEf() ; //一次为所有的浮点成员赋值
//它直接为成员赋值可以,为什么就不能调用GetEf()函数????

float EfRun( float f ) ;//这一步运算是所有子类都要执行的,就把它放基类中了。

protected:

int m_Int ; //基类包括两种数值类型,只这一个是整型,而且要被子类继承;
//其它都是静态的,浮点的。
static float m_Ef0 ;
static float m_Ef1 ;
static float m_Ef2 ;//上面三个是子类要用的数据,它们的值由下面三个计算得来

static float m_f0 ;
static float m_f1 ;
static float m_f2 ;

private:
};

class CToy_Wid:public CToy
{
public:
CToy_Wid(){};
~CToy_Wid() {} ;

float OutF() ;//最终是这个函数输出结果
private:
};

class CToy_Out:public CToy
{
public:
CToy_Out(){ m_f = 100.f ;};
~CToy_Out() {} ;

float OutF() ;//最终是这个函数输出结果
private:
float m_f ;
};

.cpp文件:

float CToy::m_f0 = 10.f ;
float CToy::m_f1 = 20.f ;
float CToy::m_f2 = 30.f ;

float CToy::m_Ef0 = 0 ;
float CToy::m_Ef1 = 0 ;
float CToy::m_Ef2 = 0 ;
CToy::CToy()
{
}
CToy::~CToy()
{
} ;

void CToy::GetInt( int i )
{
m_Int = i ;
}
void CToy::GetEf( float Ef ,float f )
{
Ef = f ;
}

void CToy::GetAllEf()
{
m_Ef0 = m_f0 ; m_Ef1 = m_f1 ; m_Ef2 = m_f2 ;
//上面直接赋值可以,下面调用函数就不行,为什么???
// GetEf ( m_Ef0 , m_f0 ) ;
// GetEf ( m_Ef1 , m_f1 ) ;
// GetEf ( m_Ef2 , m_f2 ) ;
}

float CToy::EfRun( float f )
{
float F = (float)m_Int * f ;
return F ;
}

/////////////////////////////////////////////////////
float CToy_Wid::OutF()
{
return EfRun ( m_Ef0 ) ;
}
////////////////////////////

float CToy_Out::OutF()
{
float tf = EfRun ( m_Ef0 ) ;
tf *= m_f ;

return tf ;
}

main函数:

int _tmain(int argc, _TCHAR* argv[])
{
CToy_Wid m1 ;
CToy_Out m2 ;

m1.GetInt( 5 ) ;m2.GetInt( 2 ) ;
m1.GetAllEf() ;

cout<<m1.OutF()<<endl;
cout<<m2.OutF()<<endl;
system( "PAUSE"); 

return 0;
};

------解决方案--------------------
可以啊 
static void    GetEf( float Ef , float f ) ;//为浮点成员赋值的方法
这个函数写错了 应该是引用
static void    GetEf( float& Ef , float f ) ;//为浮点成员赋值的方法