首 页IT知识库翔宇问吧收藏本站
当前位置:翔宇亭IT乐园IT知识库编程技术C/C++

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

减小字体 增大字体 作者:佚名  来源:IT知道网  发布时间:2010-04-29 11:19:00

本文介绍了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://www.biye5u.com),转载请保留此信息!

知识评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 1分

内 容:

            请注意用语文明且合法,不要发布带有攻击性、侮辱性的言论,谢谢合作!

         通知管理员 验证码:

关于本站 | 网站帮助 | 广告合作 | 网站声明 | 友情连接 | 网站地图 | 用户守则 | 联系我们 |
本站大多数内容来自互联网或网站会员发布,如有侵权,请来信告之,谢谢!
Copyright © 2007-2017 biye5u.com. All Rights Reserved.
网站备案号:黑ICP备13005378号-3