c++ - 使 SDL 调用纯虚成员函数作为事件回调?

标签 c++ sdl-2

我目前正在开发一个小型应用程序类。它应该使使用 SDL2 的某些步骤变得不那么痛苦。例如,我希望在实现派生类(应用程序类是基接口(interface))时重载一个名为 handleEvent 的函数,以自动传递当前 SDL_Event,以便用户可以使用它做一些事情。

我认为使用内置的 SDL 函数 SDL_AddEventWatch 创建回调比启动线程并让它手动检查新事件并调用成员函数要好。

然而,SDL Documentation for the function没有指定使用成员函数作为“过滤器”。而且我什至在使用纯虚拟成员函数!

请注意,此函数唯一需要的参数(从我的角度来看)是指向要处理的偶数的指针。然而,仍然需要访问 this 指针,以便用户可以直接更改类中的内容。

实现它的正确方法是什么?

最佳答案

我会使用 libffi 的闭包来围绕与预期签名匹配的实例创建包装器。用于初始化闭包的函数将采用保存的实例参数和任何 SDL 传递并将它们转发到虚拟函数。

关于c++ - 使 SDL 调用纯虚成员函数作为事件回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47612687/

相关文章:

c++ - 是否可以在没有包含保护的情况下编写头文件,并且没有多个定义错误?

c++ - SDL2 运行得太快了——为什么当我只按一个按钮时它会读取多个输入?

c++ - 渲染时如何使SDL2 0,0定位窗口的中心?

sdl - 如何获取SDL2中的物理显示分辨率?

c++ - 从哪里获得 Fedora 19 的 SDL2 非默认库?

python - 如何在运行时覆盖 C 函数(如 LD_PRELOAD)?

c++ - 动态为 C 字符串分配内存,无需先询问用户输入有多长

c++ - 如何在json文件中搜索对象的值?

c++ - 指针类错误

sdl - 'SDL_JoystickOpened' 的 SDL-2.0 对应函数是什么?