You’re trying to pass a ‘pointer to a member function’ as a ‘pointer to a
function’, this is simply not possible. And for a good reason if you think
about it: which instance of draw_mpeg should be used? what if there is no
instance of draw_mpeg?
If you can make a singleton of draw_mpeg, you could work around it by
implementing a function that would call on it’s turn the update_surface of
the only instance of draw_mpeg, and pass that function to
//the function could look like :
void _update_surface( SDL_Surface *surface, Sint32 x, Sint32 y, Uint32 w,
Uint32 h )
draw_mpeg::get_the_instance()->update_surface(surface,x ,y, w, h);
// and the draw() method :
void draw_mpeg::draw( SDL_Surface* dest )
SMPEG_setdisplay( mpeg, myvideo, NULL, _update_surface );
If you don’t know how to make a singleton of draw_mpeg, read a good book
about design patterns.