Bonjour à tous,
Comme vous pouvez le deviner, j'ai une question sur le C++. Notamment sur les pointeurs / références et héritages.
Un moment, j'ai cru qu'il fallait toujours utiliser les pointeurs pour utiliser les classes que nous héritions. Ainsi, nous pouvions faire une liste de pointeur sur la classe mère qui entrainait l'appel à la fonction hérité des sous classes, si disponible, selon le vrai type "qui se cache derrière le pointeur générique" (si je puis dire).
Hum, je ne sais pas trop comment énoncé la question et en fait, je ne suis même pas sur d'avoir une question sur ce point. Bref passons (certes, c'est encore un peu le fouillis dans ma tête).
J'énonce souvent une règle (que je puisse avoir entendu sur ce forum) qui est d'éviter à tout pris les pointeurs (entre autre, car c'est nous qui gérons la durée de vie des objets). Le mieux étant d'utiliser des smart pointeurs comme ceux de boost.
Mais, je voulais savoir, lorsque nous avons une classe qui contient une instance d'une autre classe. Par exemple, une classe Renderer qui contiendrai une Camera.
Si en dehors de ma classe Renderer, j'ai besoin de modifier la camera, faut il mieux que je fasse un setter qui retourne un pointeur ou une référence? (Dans les deux cas, je ne retourne pas quelque chose de constant ... ce qui m'embête un peu).
En fait, si vraiment la classe Renderer devait garder le controle complet de la camera, il ne faudrait même pas que je fasse de setter, mais qu'à la place je réimplémente des fonctions, qui appellerai celle de la classe camera. N'y a t'il pas un design pattern pour me simplifier ce processus?
Finalement, si j'utilise un std::vector<T> de mon objet. Dois-je stocker des pointeurs ou dois-je essayer de faire sans les pointeurs ?
Il me semble que le seul cas ou je suis vraiment forcé d'utiliser les pointeurs, ces lorsque la classe que je veux mettre dans mon vecteur est abstraite pure, ou du moins, lorsque c'est une classe mère et que je veux une liste de ceux-ci pour appeler les méthodes hérités facilement. Ai-je juste?
Merci de m'éclairer sur ces points qui me mettent souvent en doute.
Partager