En effet tu pourrais dessiner plusieurs fois l'objet comme ça, mais ce n'est pas vraiment la solution "préférée". SFML utilise des objets dessinables (et non des fonctions de dessin) justement pour que chaque objet affiché ait sa propre existence et ses propriétés dans le programme.
Si tu veux juste factoriser l'initialisation d'une entité tu as deux façons très simples :
sf::RectangleShape r1;
//configure r1...
auto r2 = r1;
r2.setPosition(...);
auto r3 = r1;
r3.setPosition(...);
sf::RectangleShape makeRectangle(sf::Vector2f position)
{
sf::RectangleShape r;
// configure r...
r.setPosition(position);
return r;
}
auto r1 = makeRectangle(...);
auto r2 = makeRectangle(...);
auto r3 = makeRectangle(...);