I am trying to use a library called FMOD for audio, and I have a base 'game state' class with an array of sounds which can be played (also serves as an interface to update and draw). You can critique this design decision too, but I derived from this base class with a loading_game_state, which then loads the sounds into the array. I am notified when a sound has completed loading through a callback with the prototype:

Code:
FMOD_RESULT F_CALLBACK AsyncOpenCompletion
    ( FMOD_SOUND * sound, FMOD_RESULT result );
Neither of those parameters are user submitted data, and neither are under my control. I can make the callback a static member of my class, but I can't exactly see how I'd tie it back to an instance of the class.