我是 C++ 新手,我正在尝试使用 C++ 和 SDL 进行一些测试,在 SDL 中我们有一个函数:
SDL_TimerID SDL_AddTimer(Uint32 interval, SDL_NewTimerCallback callback, void *param);
我可以为创建的计时器传递一个回调。但显然它将我的实例 this 转换为 *void 所以我无法在静态的更新方法上再次检索它,这很有趣,但 SDL_AddTime 不适用于非静态回调函数。
好吧,所以我的问题是,当尝试通过 void* param 参数调用公共方法渲染时,它抱怨不是指向对象类型的指针......
由于我无法控制 SDL_AddTime 函数并且必须传递所需的参数,因此有什么方法可以在 update 方法中再次获取 Character 实例?
谢谢
#include "Character.h"
Character::Character(void)
{
timer = SDL_AddTimer(33, update, this);
this->render(); // is called without problem
}
//static method
Uint32 Character::update(Uint32 interval,void* param)
{
param->render(); // yields: 'void*' is not a pointer-to-object type;
SDL_Event event;
event.type = SDL_USEREVENT;
event.user.code = 1020;
event.user.data1 = param;
SDL_PushEvent(&event);
return interval;
}
void Character::render(void)
{
printf("rendering character \n");
}