C++ 将任何类成员函数作为参数传递

C++ 将任何类成员函数作为参数传递,c++,member-functions,C++,Member Functions,我试图将类成员函数作为参数传递 当我使用下面的代码时,这个工作非常好 #包括 类别CMother; typedef int(CMother::*FuncPtr)(char*msg); 类CMother { 受保护的: 无效设置函数ptr(函数ptr ptr) { //在这里获取ptr } }; CSon类:公共CMother { 公众: CSon() { SetFunctionPtr((FuncPtr)MyFunc); } 私人: int MyFunc(字符*msg) { printf(msg)

我试图将类成员函数作为参数传递 当我使用下面的代码时,这个工作非常好

#包括
类别CMother;
typedef int(CMother::*FuncPtr)(char*msg);
类CMother
{
受保护的:
无效设置函数ptr(函数ptr ptr)
{
//在这里获取ptr
}
};
CSon类:公共CMother
{
公众:
CSon()
{
SetFunctionPtr((FuncPtr)MyFunc);
}
私人:
int MyFunc(字符*msg)
{
printf(msg);
返回0;
}
};
int main()
{
孙振森;
返回0;
}
但是当我试图用模板概括
typedef
部分时,我得到了一个
致命错误C1001:内部编译器错误
生成此错误的完整代码是

#包括
模板
typedef int(T::*FuncPtr)(char*msg);
类CMother
{
受保护的:
无效设置函数ptr(函数ptr ptr)
{
//在这里获取ptr
}
};
CSon类:公共CMother
{
公众:
CSon()
{
设置函数ptr(MyFunc);
}
私人:
int MyFunc(字符*msg)
{
printf(msg);
返回0;
}
};
void mmm()
{
孙振森;
}

谁能帮我一下吗。

C++在C++11之前没有模板typedef。

我知道这不是你要问的,但是为什么你不能使用虚拟函数呢?