I'm trying to do it now and my solution is use a priority queue with pairs that contains a pointer to a sf::Drawable and a unsigned int that represents the depth. I made own classes with drawing members that when invoked, instead of draw in the RenderWindow, it pushs to the queue. The queue will be sort by depth, so at the end of the "step" I draw all the content of the queue.