Master engine class for a Pong game
A "master class" is a very close relative to a singleton or a global.  It can easily be a design which violates the Dependency Injection principle, and leaves you with non-modular code.  In this case your engine is also violating the Single Responsibility principle, as it's doing a lot of unrelated tasks:  it's handling windows, providing the game's main driver, moving the ball, drawing the screen, and hosting all kinds of different data.

Try this task:  write a unit test that exercises just the engine::handleWindow() routine without needing to create a real ball, enemy, or player.  It's hard, because your constructor builds all of those objects.

You've already got a start.  For example, you can easily write a unit test that tests engine::eventDraw without creating a real RenderWindow, because you can pass a mock RenderWindow on the engine constructor.  You're using dependency injection.

As you're going to have a singleton in main (and every program does at some level), I recommend you try to keep that singleton as thin as possible.

It's not that your existing code isn't going to work, but it's going to be a problem to maintain, especially as you extend it to add functionality.  Where does scorekeeping come in?  Player preferences?  High score table?  Head-to-head play with two people?  The more you want to add to this, the more you're going to need to change engine, and the less confident you're going to be that you aren't breaking something else.