CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

如何将一个普通函数强制转换成类成员函数

楼主lovelyhawk(小鹰)2004-08-03 09:59:11 在 C/C++ / C++ 语言 提问

是不是不可能阿? 问题点数:0、回复次数:18Top

1 楼lemon520(喷血)回复于 2004-08-03 10:12:42 得分 0

好象不可能吧!  
  只有把代码拷到类成员函数里面.................   :(Top

2 楼geesun(还是Geesun!)回复于 2004-08-03 10:36:17 得分 0

#include<iostream>  
  using   namespace   std;  
  typedef   int   (*Func)();  
   
  class   a  
  {  
  public:  
  static   int   z   ;  
  static   int   func()  
  {  
  z   =   100;  
  //x   =100;  
  };  
  Func   testf;  
  };  
   
   
   
  int   a::z   =0;  
   
  int   testfunc()  
  {  
  cout   <<   "asdfasdf"<<endl;  
  }  
   
  int   main()  
  {  
   
  a   test;  
  test.testf   =   &testfunc;  
  test.testf();  
   
  }  
   
   
  不知道这样能不能满足搂主的意思!Top

3 楼rwdx(忆)回复于 2004-08-03 10:58:37 得分 0

c++不支持委托或者事件Top

4 楼kaphoon(齐柏林飞艇)回复于 2004-08-03 11:20:12 得分 0

geesun(还是Geesun!)   兄:老是   写test.testf   =   &testfunc;,我觉得这个'&',不需要写,因为testfunc本来就是个地址了(函数首地址),或者说是函数指针~  
  Top

5 楼RookieStar(Yukon)回复于 2004-08-03 11:25:39 得分 0

同意飞艇的。Top

6 楼lovelyhawk(小鹰)回复于 2004-08-03 12:47:03 得分 0

我的意思是:  
  class   A;  
   
  int   fun();  
   
  typedef   int   (A::*PFUN)();  
   
  PFUN   p   =   (PFUN)(&fun);  
   
  为啥不行  
  Top

7 楼RookieStar(Yukon)回复于 2004-08-03 13:03:13 得分 0

语法问题:  
  typedef   int   (*A::PFUN)();Top

8 楼mybaby999(如水江南)回复于 2004-08-03 13:46:15 得分 0

大象阿,不要误人子弟啊  
   
  像这样的方法可以实现,但是你最应该告诉他的是,不要这样编程Top

9 楼lkjx82(风化血)回复于 2004-08-03 14:44:57 得分 0

为什么会有这种需求呢?  
  Top

10 楼darkstar21cn(≮天残≯无畏)(死亡进行时)回复于 2004-08-03 15:19:57 得分 0

谢谢,飞艇兄,我一直使用这个&,不知道能够不用。现在知道了,看样子我还是重新学起算了。Top

11 楼rockhard(不签名)回复于 2004-08-03 17:32:22 得分 0

 
   
  试了下,好象真的没办法。或许与成员函数有个隐含的 this指针有点关。Top

12 楼geesun(还是Geesun!)回复于 2004-08-03 17:38:17 得分 0

kaphoon(齐柏林飞艇)    
  test.testf   =   &testfunc   里面的&是不能少的!这样才能是取地址!(在我的编译器里尼那样通不过的)  
  呵呵~~  
  kaphoon(齐柏林飞艇)   能交个朋友吗?   
  我上海的,刚刚工作一年~~你呢?  
   
  Top

13 楼geesun(还是Geesun!)回复于 2004-08-03 17:41:02 得分 0

class   A  
  {  
  public:  
  int   index;  
  void   update(int   i)  
  {  
  cout<<index<<"   "<<i<<endl;  
  }  
  };  
   
   
  int   main()  
  {  
  typedef   void   (A::*FUNC)(int   i);  
  FUNC   func   =   &A::update;  
       //FUNC   func   =   A::update;//我这里通不过  
  A   a;  
  (a.*func)(1);  
  return   0;  
  }Top

14 楼geesun(还是Geesun!)回复于 2004-08-03 17:43:51 得分 0

#include<iostream>  
  using   namespace   std;  
  typedef   int   (*Func)();  
   
  class   a  
  {  
  public:  
  static   int   z   ;  
  static   int   func()  
  {  
  z   =   100;  
  //x   =100;  
  };  
  Func   testf;  
  };  
   
   
   
  int   a::z   =0;  
   
  int   testfunc()  
  {  
  cout   <<   "asdfasdf"<<endl;  
  }  
   
  int   main()  
  {  
   
  a   test;  
  test.testf   =   testfunc;//这个能通过  
  test.testf();  
   
  }  
   
   
  kaphoon(齐柏林飞艇)   解释一下啥!谢谢!Top

15 楼whyglinux(山青水秀)回复于 2004-08-03 17:48:05 得分 0

>>   我的意思是:  
  >>   class   A;  
  >>   int   fun();  
  >>   typedef   int   (A::*PFUN)();  
  >>   PFUN   p   =   (PFUN)(&fun);  
  >>   为啥不行  
   
  为什么要给自己找麻烦呢?在类中你可以直接调用全局函数,何必进行转换呢?就因为完全没有这个必要,所以C++标准规定这种转换为非法,强制转换也不行。Top

16 楼peter9606( 荷尔蒙一失效 人就清醒了)回复于 2004-08-03 17:52:35 得分 0

mark~Top

17 楼langzi8818(┤天道酬勤┝爱老婆┦┷我是来学习滴┷)回复于 2004-08-03 18:10:24 得分 0

MARK~~~Top

18 楼wxy_8191(菜鸟想往高处飞)回复于 2004-08-03 19:03:51 得分 0

学习~Top

相关问题

  • 函数指针的类型转换:普通C函数 和 类成员函数 怎么相互转换?
  • C++成员函数怎么转换成C函数指针?
  • 普通类的成员函数是模板函数
  • 转换函数
  • 函数转换
  • 接口成员函数指针怎样转换成普通的字节指针?求求大侠帮我看看罢!!
  • 普通类里模板成员函数的问题
  • 急!转换函数
  • 转换dll函数
  • 我明明定义了窗口的回调函数,为什么说无法转换成(DLGPROC)?难道回调函数不能是成员函数吗?

关键词

  • 函数
  • 转换
  • pfun
  • func
  • typedef
  • static

得分解答快速导航

  • 帖主:lovelyhawk

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo