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