标签:style blog http color ar sp div log bs
int f(char a, float b);
如果它是普通函数,则它的类型是 int (*)(char, float);
如果它是非静态成员函数,则它的类型是 int(ClassName::*)(char, float);
如果它是静态成员函数,则它的类型是和普通函数一样。
类的成员函数必须和一个类的实例结合起来才有意义。可以写一个函数来包装类的成员函数。
class X { public: void f(); static void sf(); }; X x*; void wapper_f() { x->f(); } int main() { signal(SIGINT, wapper_f); // ok signal(SIGINT, X::sf); // ok }
用typedef.
class Fred { public: int f(char x); int g(char x); }; typedef int (Fred::*FredFn)(char x); void f() { FredFn fn = &Fred::f; } void f2(FredFn fn) {... } FredFn f3() {...}
#define CALL_MEMBER_FN(object, prtToMember) ((object).*(prtToMember)) void userCode(Fred &fred, FredFn fn) { int ans = CALL_MEMBER_FN(fred, fn)(3); }
标签:style blog http color ar sp div log bs
原文地址:http://www.cnblogs.com/zhfan/p/4067820.html