私はC++を初めて使用し、C ++とSDLを使用してテストを行おうとしていますが、SDLには次の関数があります。
SDL_TimerID SDL_AddTimer(Uint32 interval, SDL_NewTimerCallback callback, void *param);
作成されたタイマーのコールバックを渡すことができます。しかし、どうやらこれは私のインスタンスを* voidに変換するので、静的なupdateメソッドで再度取得することはできません。興味深いのですが、SDL_AddTimeは非静的コールバック関数では機能しません。
さて、私の問題は、void * param引数を介してパブリックメソッドrenderを呼び出そうとすると、オブジェクト型へのポインタではないことについて不平を言うことです...
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");
}