Je vais préciser le :
En premier, une consommation mémoire inutile (c'est bête en C++), et une mauvaise conscience .
Commençons par la "mauvaise conscience". Peut-être le codeur va commencer par créer un attribut Sprite à son propre objet, mais il se rendra compte qu'il doit dupliquer les attributs de coordonnées, de rotation, etc. puis les passer à son attribut Sprite à chaque fois. Il va se lasser de la recopie, ne pas apprécier qu'on puisse accéder à ces attributs autrement que par Sprite.get
/set
Attribut, va aussi penser à l'aspect "consommation inutile", et va finalement commettre une grosse erreur (c'est exactement mon parcours que je vous donne) : il va faire hériter sa classe Player de Sprite, et va ensuite continuer dans cette lancée en créant des listes hétérogènes de Drawable* (malheur !).
Ensuite, une consommation mémoire inutile, qui doit être faite pour éviter un mauvais design, est tout simplement, comme le nom l'indique, inutile. Elle n'a pas lieu d'être. Elle est facilement contournable. Mieux encore, elle force à choisir le bon design, à faire ce que toi et Laurent pensez !
Je me souviens d'une version plutôt récente d'OpenGL qui "cassait" aussi ses fonctions et nous laissait ainsi plus de libertés, d'augmentations de performances, etc., car ces fonctions réunissaient sûrement plusieurs opérations ensemble alors que certaines n'étaient utiles que dans certains cas.
Sur ce coup, je suis sûr d'avoir raison. A la limite, au diable mes qui consistent à "remonter" des méthodes, si c'est pour considérer celle-ci. D'un point vu théorique reconnu par tous et au niveau de mon expérience personnelle, qui selon Laurent est plutôt répandue chez les débutants puisqu'il veut absolument éviter les comportements qu'induisent la réunion des attributs de Transformable et de Drawable dans Sprite, etc., j'en suis convaincu.
Certes, pour faire un "Hello World" + Sprite, il faudra créer un objet supplémentaire et appeler une fonction en plus. Mais sur tous les autres projets, utilisant des classes Player, etc. contenant un attribut Drawable permettant de la flexibilité, évitant de transmettre tous les attributs à son Drawable puisqu'il utilisera directement celles de la classe le contenant, etc., des lignes de codes seront même gagnées.
En tout cas, merci, Orwel (Georges ?), de faire vivre le sujet
.