It's just a design thing I guess. A render target doesn't have to know when it's "done" (think unbuffered rendering).
I think the problem here is the fact that you're trying to create a "drawable", just not the way SFML wants you to do.
So rather than calling something like `yourObject.draw(renderTarget);` in your code, you're supposed to call `renderTarget.draw(yourObject)`.
The latter can be achieved by subclassing `sf::Drawable`. There's nothing wrong in making this your "super draw everything class".
As an alternative workaround – if you insist on your interface – you could just overload the method called, once for `sf::RenderTexture*` and once for `sf::RenderWindow*`. This also works for a constructor, just make sure to store which subclass of `sf::RenderTarget` you actually received.