Context: I'm going to write a simple, text based game with a combat system that uses an event queue instead of being traditionally turn-based. I'm writing my own event queue (based on linked-list), and that's going well thus far, but I'm stuck on how I actually implement my Events.

When the user chooses an action in this game, the action, along with in how many time units the action will resolve, is put into an Event. A pointer to that Event is then inserted into my event queue (as a data member of a node). My event queue is always sorted (node are inserted into the right place, and the next one to resolve is always at the front).

The problem is, I have no idea how to save the function, along with all of its parameters, into the Event. Let's say the user, through the text menu, chose to cast a Sleep spell on a target Orc. If I were using a combat system that resolved actions immediately, then I'd probably write something like this in the program:
Code:
user->CastSleep( orc_ptr );
But in my game, the event doesn't resolve until later. How do I "save" this function call for later, until the event is supposed to resolve? Thanks in advance!