1719Fermer1721
deleted2Le 24/11/2010 à 22:25
Link (./1717) :
1. C'est un "faux" catch de toute façon

A l'époque, je ne parlais pas de variables globales.
Sasume (./1718) :
non.gif L’héritage multiple du C++ est tout sauf élégant frown.gif

Pardon, je parle d'interface en fait, héritage de fonctions virtuelles pures réimplémentées de manière spécialisée par les classes héritières.
Moi j'aime bien. smile
Sasume (./1718) :
Sinon une solution pas trop contraignante pour éviter d’avoir à trimballer trop de paramètres à tes fonctions graphiques, c’est de les regrouper dans une structure que tu pourrais appeler un contexte graphique.

J'ai regroupé ce genre de choses dans un objet dédié, comme me l'avait suggéré Pen^2.


Question maintenant. J'ai un écrit une classe toute bête me permettant de regrouper mes objets à dessiner dans une liste par exemple, ce qui permet d'appeler dans une boucle toutes leurs fonctions de dessin, que chacun réimplémente à sa façon :class Drawable { public: Drawable (bool enabled = true); void drawEnable (); void drawDisable (); void drawToggle (); bool isDrawable (); virtual void draw () = 0; private: bool m_Enabled; };
Comme vous le voyez, une variable est prévue, permettant de désactiver l'affichage d'un objet. Je veux que sa fonction draw() voit ça et n'affiche pas son objet.
Comment faire pour éviter que chaque objet interroge sa partie Drawable pour savoir s'il doit se dessiner ? Pas que ce soit chiant à écrire (if (isDrawable()){....}), mais j'ai juste peur, dans l'implémentation d'un objet, d'oublier cette condition.

Je voudrais que ce soit transparent pour l'objet, en clair qu'il ne se dessine pas, même lorsqu'il essaye, si il a été désactivé, mais sans procéder à cette vérification lui-même.

Il y a un moyen ?


cross -> Zerosquare -> Je comprends pas trop le coup des (un)LockSurface de la SDL, sachant qu'on ne peut rien écrire dans la surface quand elle est lockée. De toute façon, s'il bouge cette surface en mémoire, je ne vois pas comment la retrouver, je n'ai qu'un pointeur comme info sur la-dite surface.