Создание callback функции без параметров С++
Предыстория
Есть функция, которая регистрирует внутриигровую консольную команду.
typedef void (*ConCommandCallback)();
typedef void (*RegisterConCommandType)(long& id, const char* name, ConCommandCallback* callback, const char* description, const char* unk_1, long& unk_2_null);
Раньше я регистрировал команду таким способом:
void test() {
Msg("test success\n");
}
ConCommandCallback* callback = &test;
RegisterConCommand(id, name, callback, description, 0, unk);
Это хорошо работало, но затем я захотел таким способом регистрировать лямбда-функции либо функции класса.
Попробовал это сделать таким образом:
ConCommand* cmd = new ConCommand(name, description, callback);
auto bind = new std::function<void()>(std::bind(&ConCommand::Invoke, cmd));
RegisterConCommand(cmd->id, name, reinterpret_cast<ConCommandCallback*>(&bind), description, 0, cmd->unk);
return cmd;
Из-за этого в игру приходит указатель на объект std::function, а не на саму функцию.
Вопрос
Можно ли сделать так, если игра вызывает callback функцию void(), преобразовать ее в callback члена класса? В моем примере, чтобы вызвалась функция Invoke внутри объекта, который создавался при регистрации консольной команды. Спасибо!