首页 > 编程 > C > 正文

C++成员函数指针的使用方法

2023-06-09 12:08:04
字体:
来源:转载
供稿:网友

本文介绍了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*转成员函数指针进行报错。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表