Ohje, wie hier wieder mit Singletons rumgeworfen wird... Warum soll man nur 1 Device haben können? Ist doch Nonsens.
2 Klassen:
device - deine device-klasse
sprite - deine sprite klasse
der c'tor der sprite-klasse ist private und die klasse hat eine freundschaft zur device-klasse. die device-klasse hat eine funktion "create_sprite", welche das sprite erstellt. die funktion kann auf den c'tor von sprite dank friend zugreifen. ein sprite hat keine draw-methode, sondern nur das device. ein sprite kann sich nicht selbst zeichnen, da es nur eine ansammlung von daten ist und kein akteur.
drum:
device->draw (sprite);
das device kann auch hier wieder dank friend auf alle attribute/methoden auf sprite zugreifen. vorteil an dieser variante: da device die sprites erstellt, kann es auch einen zeiger auf diese sichern und ggf. für einen restore verwenden. also praktisch "events" an alle sprites senden.
so die einfache variante. ich würde jedoch eher mit content-jobs, managern und tasks an die sache gehen, doch das würde glaube ich gerade alles sprengen