Hatte vorher den selben Gedanken wie du und hab mich gewundert warum bei meinem MapEditor das Laden eine Ewigkeit gedauert hatte.
Eine Karte hatte ca 5000 Objekte. Jedes Objekt hatte eine sf::Texture als Member, die die Grafik jedes mal neu geladen hat.
Simple Lösung für dich wäre z.B. eine Map ( "Key", textur ) anzulegen und ersteinmal bei dem initialisieren alle Texture die es gibt zu laden.
In deiner Material-Klasse kannst du dann einen Pointer auf eine beliebige Textur, die in deiner Map vorhanden ist, zeigen lassen.
Somit ersparst du dir viel Zeit und Speicher.
Kannst dir ja ggf. mal mein
Projekt an dem ich gerade arbeite angucken.
Ich bin zwar kein Profi aber eventuell hilft es dir.
EDIT:
Zu deiner Klasse:
Das Zusammenführen würde ich einfach lassen und einfach das Sprite returnen.
Bsp: getSprite()->setRotation( angle );
oder
getTexture()->set....
Du machst dir ansonsten nur mehr schreibarbeit ("meiner Meinung nach") ...
PS:
Kleiner Hinweis ich versuche dort mit RAII zu arbeiten ...
Hilfreiche Links dazu...
--> Videoreihe:
http://www.youtube.com/watch?v=_4K3tsKa1Uc
-->
http://www.bromeon.ch/articles/raii.html