Membres inscrits :2359
Membres en ligne : 0 Invités en ligne : 3 |
Un problème régulièrement rencontré en programmation orientée objet (en particulier pour programmer dans un environnement graphique tel que wxWidgets) est de permettre à différents objets (des fenêtres, des bouttons...) de communiquer entre eux. Par exemple pour créer une barre d'outils flottante qui intergit avec une autre barre d'outils.
Pour illuster ce code, je vais prendre comme exemple 2 classes, A et B, la classe A devant appeler une méthode "message" de la classe B. Les classes A et B n'ont pas de liens entre elles
Code wxWidgets:
Ce code produit une erreur du fait que la variable b n'existe pas pour a. On va donc rendre b globale. Méthode 1 : Options de compilation Code wxWidgets:
Méthode 2 : variable statique dans une classe Code wxWidgets:
Cette solution est utilisé dans Code::Blocks pour créer une manager qui permet l'échange de données entre les fenêtres (fichier "manager.h"). Une autre solution (pour ce cas simple) aurait été de conserver un pointeur vers la classe B. par exemple : Code wxWidgets:
C'est la solution utilisé lorsque l'on crée un control dans une fenêtre (le premier paramètre transmis est un wxWindow* parent)
Ces 2 exemples sont des méthodes "relativement élégantes", qui devraient aider quelque uns d'entre vous.
La seconde méthode est préférable, du fait qu'elle assure que le pointeur soit toujours valide et qu'elle oblige d'ajouter qu'un seul #include.
|