//MyClass.hh
Class MyClass{
public:
MyClass();
static double f_01(double);
double zero(double);
void set_data(int);
private:
static MyClass * ptr;//静态数据成员,静态成员函数可以访问
int data;
double zero(double,double f(double));
};
//MyClass.cc
MyClass()
{
ptr = this;//指定类指针是当前实例
}
double MyClass::f_01(double x)
{
x = x + ptr->data;
return x;
}
double MyClass::zero(double a )
{
return zero(a,f_01);
}
double MyClass::zero(double a ,double f(double))
{
a = a + 1;
double value;
value = f(a);
return value;
}
void MyClass::set_data(int b);
{
data = b;
}
//main.cc
int main()
{
MyClass A;//实例化
A.set_data(5);
z = A.zero(10.0);
}
当类成员函数是另一个成员函数的参数时,该函数是静态函数(具体原因还不懂)。
设置静态成员变量为该类的指针,并在类实例化后将this指定给该指针,这样静态函数可以访问该实例的非静态数据成员,并且不需要改变静态函数的形参。