Initializing a game in SDL
I see some things that may help you improve your code.

Use all required #includes

The Media.cpp file uses a std::exception but is missing this line:

#include &lt;exception&gt;


Use std::runtime_error

The code in Media.cpp includes this line:

throw(std::exception("Cannot load player texture"));


However, that shouldn't compile because there is no constructor for std::exception that takes a const char * argument.  Instead, that should probably be this:

throw(std::runtime_error("Cannot load player texture"));


Don't forget SDL_Init

Any SDL2 program must call SDL_Init but yours doesn't.  To fix that, I'd recommend adding an SDL object as illustrated on the SDL Wiki.  It simply makes an object whose constructor calls SDL_Init and whose destructor calls SDL_Quit while translating SDL error into C++ exceptions.

Remember object scoping rules

Right now, your objects are all declared within the try block.  This also means that they only exist within that block because of C++ scoping rules.  In a real version of the program, you'd either need to have something happen inside that try block.