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) { |
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; } |
楼主这代码里哪有什么类成员函数指针。
只有一个普通的指向普通函数的指针。 |
|
直接初始化就行,当然,要通过合适方式。 |
|
谢谢大神们的回答,本人已自行实现,原来是拷贝构造函数错了。。。没有进行初始化,所以总是造成自由函数地址丢失
|