dekname
Участник
- 44
- 2
Без static'a же тоже можно сделать callback. Получить адрес через union и дописать this на текущий класс (thunk). Например так:static
C++:
// union
union UnionCallbackCommand
{
using ptr_t = void(SomeClass::*)(const char*);
ptr_t ptr;
uint64_t addr_as_uint64;
};
// получение адреса
m_union_cmd_callback.ptr = &SomeClass::Command;
// в private:
UnionCallbackCommand m_union_cmd_callback;
// регистрация команды:
m_input->AddCommand("somecommand", (sampapi::CMDPROC)&m_union_cmd_callback.addr_as_uint64);
// сам callback
void SomeClass::Command(const char* cmd)
{
}
Но так я получаю зависание игры, как можно пофиксить?