普通的C函数作为参数传递比较简单,下面给出类成员函数作为参数传递的实例:
class CMyClass
{
public:
typedef void (CMyClass::*SELFDEF_PFN)(const char * str);
void foo(SELFDEF_PFN p, const char* str)
{
printf("执行预处理动作。\n");
// ...
(this->*p)(str);
printf("执行结束后的动作。\n");
// ...
}
void fa(const char* str)
{
printf("%s\n", str);
}
void fb(const char* str)
{
printf("0x%x\n", str);
}
};
int _tmain(int argc, _TCHAR* argv[])
{
char szText[] = "example string";
CMyClass inst;
inst.foo(&CMyClass::fa, szText);
inst.foo(&CMyClass::fb, szText);
return 0;
}
但是不能用一种写法通吃所有类。想传递任意类型的函数的成员函数,请使用模板,使用时进行特化以达到这种效果。