Code Bye

C++类成员函数指针指向自由函数

 
typedef  bool(*CHECK)(double&, strucs data&);

class A{
     public:
              A(int a, CHECK fun) : b(a), pFun(fun){}
              bool operator() (double& m, double& n);
     private:
             int b;
             CHECK  pFun;
}

static bool do_check(double& a, strucs data& d)
{

}

问题是:类成员函数指针pFun指向自由函数do_check,然后在构造一个类对象,在  operator()使用pFunc,怎么做?例如:

A aClass;
aClass(10.0,16.0);
bool operator() (double& m, double& n) { return pfun(参数1, 参数2); }
可能我没说清楚,我想问的是,怎么能把类成员函数指针指向自由函数
10分
“类成员函数指针指向自由函数”,我理解你的意思是“类对象的成员函数指针指向自由函数”

 bool A::operator() (double& m, double& n) {
   return pfunc(m, whaterver) && pfunc(n, whatever);
}
A aobject(1.0, do_check);
aobject(2.0, 3.0);

20分
修改如下:
//struct data是什么具体类型?
//typedef  bool(*CHECK)(double&, struct data&);
typedef  bool(*CHECK)(double&, double&);
class A {
public:
	A(int a, CHECK fun) : b(a), pFun(fun) {}
	bool operator() (double m, double n);
private:
	int b;
	CHECK  pFun;
};
bool A::operator() (double m, double n)
{
	return pFun(m, n);
}
static bool do_check(double& a, double& d)
{
	return a < d;
}
int main(void)
{
	A aClass(1, do_check);
	cout << aClass(10.0, 16.0);
	return 0;
}
楼主这代码里哪有什么类成员函数指针。
只有一个普通的指向普通函数的指针。
引用 2 楼 changqing5818 的回复:

可能我没说清楚,我想问的是,怎么能把类成员函数指针指向自由函数

直接初始化就行,当然,要通过合适方式。

谢谢大神们的回答,本人已自行实现,原来是拷贝构造函数错了。。。没有进行初始化,所以总是造成自由函数地址丢失

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C++类成员函数指针指向自由函数