I am learning SDL atm and trying to make a very basic graphics engine to make a tetris clone. I have been able to fix every bug I have made except for this one: error: SDL_Surface does not name a type.

gameEvents::screen() is returning an SDL_Surface, are you sure you don't want to return a pointer to an SDL_Surface instead? If you do, that should solve your problem since the code you posted doesn't actually make use of the SDL_Surface.

Any code that actually works with an SDL_Surface will need "SDL.h" included to bring in the definition.