设为首页 加入收藏

TOP

C++成员函数指针的使用方法
2014-11-01 16:30:08 来源: 作者: 【 】 浏览:59
Tags:成员 函数 指针 使用方法

  在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*转成员函数指针进行报错。


  编辑特别推荐:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++编程抛出0xc0000417错误代码 下一篇输入任意整数 输出带间隔的数字

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: