Я работаю над созданием простого 2D игрового движка и у меня есть класс, который способен играть роль кнопки в игре.Я пытаюсь сделать функцию-член такой, чтобы пользователь мог дать объекту кнопки функцию, запускаемую при нажатии, а также параметры этой функции.Вот пример кода, который частично выполняет задачу:
class Entity{
public:
template <typename ... fnParams, typename ... fnArgs>
void Set_Click_Action(void(*action)(fnParams ... params), fnArgs ... args) {
action(args ...); //this works correctly. However, I do not
//want to call the function here, I want
//instead to store the function in the Entity
//object
}
void function(int i, double j, std::string k){
std::cout << i << '\n' << j << '\n' << k << '\n';
}
int main(){
Entity entity;
entity.Set_Click_Action(function, 12, 12.5, std::string("String"));
}
Этот код работает правильно, но не достигает моей цели.Я хочу сохранить функцию для последующего использования (при нажатии на объект).Можно ли получить указатель функции и пакет переменных, содержащий аргументы в переменных-членах?Если да, то какова будет стратегия для этого?Я должен отметить, что я довольно новичок в использовании вариадических шаблонов в C ++.Заранее спасибо за любую помощь.