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

请教:如何把一个类的成员函数作为回调参数?

楼主assiss(assiss)2004-05-04 14:11:25 在 C/C++ / C++ 语言 提问

例如:  
  WNDPROC   oldproc=&classm::funcm;  
  gcc编译报错:  
  converting   from   `LRESULT   (classm::*)(HWND__*,  
  unsigned   int,   unsigned   int,   long   int)'   to   `LRESULT   (*)(HWND__*,   unsigned  
  int,   unsigned   int,   long   int)' 问题点数:100、回复次数:12Top

1 楼assiss(assiss)回复于 2004-05-04 14:16:44 得分 0

一旦能上网,问题就得到解决了。  
  这么快啊。  
  谁先进来这100分白给他了。Top

2 楼cngdzhang()回复于 2004-05-04 14:21:58 得分 10

不能的  
  类的成员函数取的地址是不确定的  
  Top

3 楼cngdzhang()回复于 2004-05-04 14:24:09 得分 0

只能是一个全局函数   带CALLBACK类型的  
   
  全局函数的地址是确定的Top

4 楼blizzard2000()回复于 2004-05-04 14:25:38 得分 10

定义成静态函数看可否?Top

5 楼chenqing1128(Alex)回复于 2004-05-04 14:26:25 得分 10

学习Top

6 楼blizzard2000()回复于 2004-05-04 14:29:06 得分 10

to   cngdzhang  
  静态函数的地址也是确定的Top

7 楼cngdzhang()回复于 2004-05-04 14:42:36 得分 15

静态函数的地址是确定的  
  但是取地址的时候  
  要加上类名  
  例如  
  class   A  
  {  
  public   :  
        static   void   f(){}  
  }  
   
  用的时候是  
  A::f()  
  如果用作回调函数,编译器会报错的  
   
  我看了好多程序(EnumChildWindow等API函数,Hook),它们的回调函数都是全局的  
  Top

8 楼flyingxu(阿飞)回复于 2004-05-04 14:49:01 得分 10

怎么理解类的成员函数地址是不确定的,而静态、全局函数的地址是确定的?Top

9 楼blizzard2000()回复于 2004-05-04 15:17:53 得分 10

to   cngdzhang  
  你用的什么编译器?我怀疑这个跟编译器有关。(纯属猜测)  
  Top

10 楼assiss(assiss)回复于 2004-05-04 15:20:51 得分 0

定义成static的确可以,  
  但是新的问题又有了。呵呵。  
   
  所以准备放弃掉用类成员函数,  
  直接使用全局函数吧。  
  下午结帖(我们这里网络基本瘫痪了,没想到大家都还是通顺的。羡慕啊。)Top

11 楼ghlpj(guolingho)回复于 2004-05-04 15:47:00 得分 10

好象C++对象模型里说过Class::Func实际上是取的相对于this的偏移量,回去验证一下  
  Top

12 楼cngdzhang()回复于 2004-05-04 15:55:08 得分 15

因为c++要支持多态  
   
  一个函数同一个名字可以有好几个实现的  
   
  void   print(char   *s)  
  void   print(string   s)  
   
  这个取不了地址了把?  
     
  而且c++还有运行时的动态绑定  
  Top

相关问题

  • 如何在CeateThread时调用一个类的带有参数的成员函数。
  • 如何使用类的成员函数做为函数参数?
  • 调用char *成员函数
  • CreateThread() 函数中的lpStartAddress参数可否为 某个类的成员函数?
  • 关于类成员函数中函数指针参数的问题!!
  • 非静态成员函数指针能做其他函数的参数吗
  • 是否有方法将C++类中的成员函数用于某些WIN32 API中的回调函数参数中?
  • 测试函数的参数调用:
  • 函数调用的参数问题
  • Jsp函数如何调用ASP参数

关键词

  • c++
  • 函数
  • 编译器
  • 全局
  • 地址
  • 成员
  • 确定
  • 回调
  • 静态
  • 类

得分解答快速导航

  • 帖主:assiss
  • cngdzhang
  • blizzard2000
  • chenqing1128
  • blizzard2000
  • cngdzhang
  • flyingxu
  • blizzard2000
  • ghlpj
  • cngdzhang

相关链接

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

广告也精彩

反馈

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