question sur les containers... - C++ - Programmation
Marsh Posté le 15-09-2003 à 18:02:13
1) bien sur que this existe et est intègre des la { ouvrante
Marsh Posté le 15-09-2003 à 18:06:46
et dans le 2) ca devrait aussi rouler
Dans le destructeur, this est encore valide. Si tout le traitement qui se fait apres sur le this que tu passe en parametre (via ton notify) se fait sequentiellement, devrait pas avoir de pb, non ?
Marsh Posté le 15-09-2003 à 18:08:47
Taz a écrit : 1) bien sur que this existe et est intègre des la { ouvrante |
oups... désolé... je me suis misérablement égaré en voulant trop réflechir...
J'ai lu récemment un article sur l'ordre des initialisations et j'ai pensé (stupidement) que cela s'appliquait ici !
Donc rien ne s'oppose à ce que j'utilise la première méthode ?
Marsh Posté le 15-09-2003 à 18:09:54
tu préfères pas wrapper par dessus tes Foo (avec un template) au lieu d'intréger le sujet ? d'ailleurs, le sujet, ne vaut t'il pas mieux que ce soit une référence
Marsh Posté le 15-09-2003 à 18:25:35
Taz a écrit : tu préfères pas wrapper par dessus tes Foo (avec un template) au lieu d'intréger le sujet ? d'ailleurs, le sujet, ne vaut t'il pas mieux que ce soit une référence |
Humm... Il va falloir que tu m'expliques un peu là...
wrapper par dessus tes Foo = faire un class Foo : public Subject<Foo> ?
Si c'est ça le problème est que j'aurais un sujet par Foo donc que chaque observateur devra être enregistré auprès de chaque Foo. Or je souhaite n'avoir qu'un sujet pour tous mes Foo (et passer en paramètre à l'observateur le Foo qui a changé). De plus, les observateurs doivent s'enregistrer après la création du Foo donc il faut que je prévoie un autre moyen d'informer de la création d'un Foo.
d'ailleurs, le sujet, ne vaut t'il pas mieux que ce soit une référence : Une référence vers quoi ?
Bon ce n'est pas évident de se comprendre surtout parce que le problème est assez mal posé à la base. Si tu veut regarder (ou quelqu'un d'autre) je peut poster une implémentation réelle de ce que j'ai déjà fait.
Marsh Posté le 15-09-2003 à 18:35:53
ben une référence vers un Sujet donné, je trouve pas ça propre de mettre le Subject comme tu fais. ben un wrapper tout bete, qui te sert à lié un objet de type T avec un Sujet donné.
Marsh Posté le 15-09-2003 à 18:54:52
OK... merci pour ces idées. Je vais voir comment intégrer ça.
Marsh Posté le 15-09-2003 à 17:54:29
Désolé pour le titre qui n'est pas très explicite, mais le premier auquel j'avais pensé ne rentrais pas !
En fait, j'ai un container (une map) qui stocke des objets de type Foo.
Plusieurs objets peuvent ajouter de nouveaux objets Foo dans la map. Plusieurs objets doivent savoir quand un objet de type Foo est créé, modifié ou détruit.
J'ai donc pensé à utiliser le "pattern" de l'observateur. Le sujet (chaque instance de Foo) doit notifier tous ses observateurs de sa création, sa modification ou sa destruction.
Je ne modifie pas ma map et je rajoute un sujet statique à ma classe Foo.
Le problème est que mes observateurs ont besoin d'accéder à l'objet Foo (d'où le this envoyé en paramètre). Or, dans le constructeur (et peut être pour le destructeur), l'objet n'est pas encore créé donc this n'existe pas. Je suis à peu près sûr que ça va marcher sur la majorité des compilateurs mais ce n'est pas standard.
Je crée une classe intermédiaire pour gérer la création et la suppression d'objets dans ma map.
Je n'ai pas vu de problèmes particuliers avec cette méthode, mais cela m'oblige à créer une classe tampon un peu inutile et allourdissant le tout.
J'ai essayé de voir si je pouvais créer une classe pour remplacer l'allocator de ma map. Cependant, je ne pense pas que cela soit la bonne solution.
Donc j'aimerais savoir si certains d'entre vous avaient une idée pour résoudre ce problème.
---------------
each day I don't die is cheating