类成员函数参数为该类某个静态成员函数指针,需要在静态函数内使用当前实例的非静态数据成员

本文探讨了如何在类的静态成员函数中访问当前实例的非静态数据成员。当类成员函数作为另一成员函数的参数时,通常需要采用静态函数。通过设置静态成员变量为类实例的指针,可以实现静态函数对非静态数据成员的访问,而无需修改静态函数的参数。
摘要由CSDN通过智能技术生成
//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指定给该指针,这样静态函数可以访问该实例的非静态数据成员,并且不需要改变静态函数的形参。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值