高手请进!
刚刚在FAQ里看到一个帖子里讲到在全局函数里得到一个类对象的成员函数的指针,但是有好几个解答看不太明白。
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
using namespace std;
class CTest{
public:
int a;
void (CTest::* FunPtr[2])();
CTest(int A=0);
~CTest(){cout<<"CTest::~CTest"<<endl;};
void fun1();
void fun2();
};
CTest::CTest(int A):a(A)
{
FunPtr[0]=fun1;
FunPtr[1]=fun2;
cout<<"CTest::CTest"<<endl;
}
void CTest::fun1(){
cout<<"CTest::fun1"<<endl;
return;
}
void CTest::fun2(){
cout<<"CTest::fun2"<<endl;
return;
}
void Global(int a,void(CTest::*b)()){
cout<<"a="<<a<<endl;
(*b)()//不行
(static_cast<CTest*>(0)->*b)(); //高手给出的答案。这个可以,但是这个类型转换是什么意思阿?
((CTest*)0->*b)(); //同上
(((CTest*)0->*b)(); // 同上
}
CTest test1;
int main(int argc, char* argv[])
{
Global(test1.a,test1.FunPtr[0]);
return 0;
}
(static_cast<CTest*>(0)->*b)(); //高手给出的答案。这个可以,但是这个类型转换是什么意思阿?
((CTest*)0->*b)(); //同上
(((CTest*)0->*b)(); // 同上
这几个类型转换到底是什么意思啊?