回调函数为什么一定要是全局或者类的静态函数呢?

w378567402 2012-04-06 11:08:47
RT
...全文
987 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
东莞某某某 2012-04-06
  • 打赏
  • 举报
回复
原型一致就可以,注意调用约定
FrankHB1989 2012-04-06
  • 打赏
  • 举报
回复
回调函数?谁说不行……大不了弄成callable object。
如果只是接收函数指针的回调,也不是全局,namespace scope的都行。
原因是不像字面上那样,指向成员的指针不是指针,无法转换。(在大多数实现上分别sizeof就可以看出问题来。)
vanxeger 2012-04-06
  • 打赏
  • 举报
回复
因为成员函数在没有成员的时候是不存在的,所以,只能用静态的或者全局的!
Red_angelX 2012-04-06
  • 打赏
  • 举报
回复
因为他们在内存中的位置是固定的
Red_angelX 2012-04-06
  • 打赏
  • 举报
回复
不是一定,只是通常的做法,为的是方便定位.
ohayou 2012-04-06
  • 打赏
  • 举报
回复
因为类的成员函数需要隐含的this指针 而回调函数没有办法提供
shn521 2012-04-06
  • 打赏
  • 举报
回复
额,哪里写到是一定?
bellbird 2012-04-06
  • 打赏
  • 举报
回复
只有这样的函数才能用普通的函数指针定位。

当然,你自己设计一个函数,参数定义成类的成员函数指针,那也是可以的
Kaile 2012-04-06
  • 打赏
  • 举报
回复
不一定,用boost bind可以绑定类的成员函数成为静态或全局函数形式

65,190

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧