Not sure if it's any use, but for programming organisation, I make use of 'stackable' classes, that is, classes that build on top of each other, with the higher class offering higher functionality for the lower classes, and combining with other classes to offer unique functionality, and eventual ease-of-use (because the higher class must preferrably automate the lower classes functions).
For example, I have five classes:
CharList (a dynamic list of chars)
DataArray (a dynamic array of chars)
FileProc (a simplified and safe file interface class)
HTMLFileProc (an automated interface to SFML's HTML functionality)
StringTokeniser (a simplified and safe StringTokeniser class)
And this is the part that is brilliant:
FileProc -> CharList/DataArray
HTMLFileProc -> DataArray
CharList/DataArray -> char string
CharList/DataArray/char string -> StringTokeniser
StringTokeniser -> char string
char string/CharList/DataArray -> FileProc
In short, you can combine the classes to work with each other, theoretically in any order (the exception being the HTMLFileProc given it's only a one way process).
But these are just a few. There's the advanced classes built on top of these (FileProcAdvanced, StringTokeniserAdvanced, FileProcModular, DataArrayDynamic etc etc). Downloading an image from a website with the right classes is literally four commands, all conducted by the assignment operator and clever C++ trickery.
So to save yourself time writing out functions, you might want to consider combining the 'Draw' function, with a class and the assigment (=) operator so you could just do something like:
RenderProc Renderer;
sf::Image BasicImage;
sf::Image ImageArr[10];
YourOwnImageClass TestImage;
Renderer = BasicImage;
Renderer = ImageArr;
Renderer = TestImage;
Or, you might want to be snazzier, and do something like this:
RenderProc: Renderer;
ImageStack Queue1, Queue2; //Dynamic list of images class
sf::Image BasicImage;
sf::Image ImageArr[10];
YourOwnImageClass TestImage;
sf::Image OtherImage;
Queue1 = BasicImage;
Queue1 = ImageArr;
Queue2 = TestImage;
Queue2 = OtherImage;
Renderer = Queue1;
Renderer = Queue2;
Seems cool to be able to do just that with the assignment operator doesn't it? Believe me it's entirely possible, only limit is imagination and technical ability.