|
发表于 2013-4-19 15:32:55
|
显示全部楼层
class Empty
{
};
typedef void (Empty::*pFunc)(int);
struct MemberFunc
{
Empty* pThis;
pFunc pf;
};
class Test
{
public:
Test()
{
}
void f(int i)
{
cout << "i==" << i <<endl;
}
};
class Function
{
public:
void set(void (Test::*pf)(int), Test* pThis)
{
func.pf = reinterpret_cast<pFunc>(pf);
func.pThis = reinterpret_cast<Empty*>(pThis);
}
void call(int i)
{
((func.pThis)->*(func.pf))(i);
}
private:
MemberFunc func;
};
int main()
{
Test t;
Function func;
func.set(&Test::f, &t);
func.call(10);
}还可以这样子,不知道你是不是想解决类似这样的问题…… |
|