Bonjour à toutes et à tous!
N'ayant malheureusement pas eu beaucoup d'occasions pour utiliser les classes, j'aimerai vous soumettre un dilemme quand à l'écriture de l'une d'elles.
J'essai de construire une classe pour instancier un bouton avec SFML. Cette classe Button (que je crée) utilise la classe sf::Text. Je suis tenté de faire hériter ma classe Button de la classe sf::Text, mais ce serait faux dans la mesure où un boutton n'est pas un texte, mais contient du texte.
Pourtant, cela me semble la solution la plus intuitive pour l'utilisateur: pour modifier le texte du bouton et ses attributs, il suffit d'écrire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 class Button : public sf::Text //un bouton n'est pas un texte... { ... };
Et je n'ai pas à re-créer toutes les fonctions pour pouvoir utiliser la syntaxe ci-dessus (fonctions qui prendraient quatres lignes, je vous l'accorde, mais il y en a une vingtaine...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Button bouton; bouton.setString("texte"); //setString provient de la classe sf::Text bouton.setCharacterSize(24); //setCharacterSize provient de la classe sf::Text
De plus, cela permet d'utiliser les fonctions de sf::Text dans les fonctions de ma classe, et (peut-être, je n'en suis pas sur) d'utiliser sf::Text comme un objet de ma classe:
window.draw(sf::Text);.
Sinon, il faudrait que je déclare un objet sf::Texte texte en publique pour y accéder grâce à button.text, ce qui donnerait par exemple: button.text.setString();.
Mais je trouve cette solution assez peu esthétique...
Que devrais-je utiliser ? L'héritage, un objet privé, un objet publique, ou quelque-chose qui ne me viens pas à l'esprit ?
Merci pour votre patience !
Cordialement,
Simac
Partager