读书人

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

发布时间: 2012-05-21 18:04:41 作者: rapoo

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

[解决办法]
只有这样的函数才能用普通的函数指针定位。

当然,你自己设计一个函数,参数定义成类的成员函数指针,那也是可以的
[解决办法]
额,哪里写到是一定?
[解决办法]
因为类的成员函数需要隐含的this指针 而回调函数没有办法提供
[解决办法]
不是一定,只是通常的做法,为的是方便定位.
[解决办法]
因为他们在内存中的位置是固定的
[解决办法]
因为成员函数在没有成员的时候是不存在的,所以,只能用静态的或者全局的!
[解决办法]
回调函数?谁说不行……大不了弄成callable object。
如果只是接收函数指针的回调,也不是全局,namespace scope的都行。
原因是不像字面上那样,指向成员的指针不是指针,无法转换。(在大多数实现上分别sizeof就可以看出问题来。)

[解决办法]
原型一致就可以,注意调用约定
[解决办法]
不一定,用boost bind可以绑定类的成员函数成为静态或全局函数形式

读书人网 >C++

热点推荐