时间:2021-05-02
本文介绍了C++编程中成员函数指针的使用方法。成员函数的指针一般是这么用的,如下例:
class A{ public:char hello(int a){ return a-'0'; }};
typedef char (A::*PTRFUN)(int);
int main(){ A* obj=new A();PTRFUN pFun; pFun = A::hello;obj->(*pFun)(2); return 0;}
但你可能遇到这样的情况,C++要将对象和函数指针传递给c,然后由c去调用,你可能会这么做:
void invokeFunc(void* obj,void* pfunc){A* class_obj=(A*)obj; PTRFUN pFun=(PTRFUN )pfunc;class_obj->(*pFun)(2);
}
int main(){ A* obj=new A(); PTRFUN pFun; pFun = A::hello; invokeFunc(obj,pFun);}
但是你会发现编译器会对PTRFUN pFun=(PTRFUN )pfunc;报错,你可以这样做:
void invokeFunc(void* obj,void* pfunc){A* class_obj=(A*)obj; PTRFUN* pFun2=(PTRFUN*)pfunc;PTRFUN pFun=*pfunc; class_obj->(*pFun)(2);}
int main(){ A* obj=new A();PTRFUN pFun; pFun = A::hello;invokeFunc(obj,&pFun);}
也就是将一级指针转换为2级指针,这样编译就不会读void*转成员函数指针进行报错。
本文源自:翔宇亭——IT乐园(http://),转载请保留此信息!声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
C++的函数指针(functionpointer)是通过指向函数的指针间接调用函数。相信很多人对指向一般函数的函数指针使用的比较多,而对指向类成员函数的函数指针
指针是C++和C语言中一个非常有用的东西,但难于掌握,本文转载介绍C++中指针使用的一些常见问题及使用方法。在下列函数声明中,为什么要同时使用*和&符号?以及什
浅谈先来说一下“this指针”:C++中通过引入this指针解决该问题,暨:C++编译器给每个“非静态的成员函数”增加了一个隐藏的指针参数,让该指针指向当前对象
虚函数主要实现了C++的多态的机制,多态就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。 C++是C语言的继承,它既可以进行C
C++获取类的成员函数的函数指针详解用一个实际代码来说明。classA{public:staticvoidstaticmember(){cout