类的成员函数可否作为函数的参数?
有一点毫无疑问,也就是函数的参数可以是指针而且该指针还能够指向某个函数。
现在问题是,该指针是否能指向某个类的成员函数。
书上说,指向类成员函数的函数指针,实际上是一个偏移地址而不是实际的地址,很明显与一般的自由函数不同。
我尝试了很久,也没有找到合适的方法,大伙帮忙看看!
[解决办法]
作为成员函数是为了限制权限。如果外部这样调用还不如写成全局函数。
[解决办法]
以下是个简单的例子
- C/C++ code
#include <iostream>#include <vector>using namespace std;class Object{public: Object(int value):m_value(value){} bool BiggerThan(int rhs) { return m_value > rhs; } int Value() const{return m_value;}private: int m_value;};template<class T>void bt(vector<T> arrObj, bool (T::*func)(int), int dst){ typedef vector<T> ArrT; for(ArrT::iterator itr = arrObj.begin(); itr != arrObj.end(); ++itr) { T* obj = &*itr; if((obj->*func)(dst)) cout << (*itr).Value() << '\t'; } cout << endl;}void test(){ vector<Object> arrObj; for(int i = 0; i < 10; i++) arrObj.push_back(Object(i)); bt(arrObj, &Object::BiggerThan, 2);}void main(){ test();}
[解决办法]
一个简单的static成员函数就搞定了,何必复杂化。