Bonjour
Un petit topic de conception comme on les aime. J'ai besoin de créer des objets qui accèderont à une map pour mettre en correspondance une chaîne avec la valeur d'un enum. Cette map est commune à tous les objets.
Ma technique habituelle consiste à créer une factory qui portera cette map et en donnera une référence aux objets créés. Cela permet d'éviter de trimbaler un singleton et éventuellement de moduler la map pour créer des "groupes d'objets" au comportement différent.Mais il y a un gros défaut: c'est que la map créée par la factory voit sont cycle de vie lié à celui des objets créés, et ceux ci ne fonctionnent plus si elle est détruite (à la destruction de la factory par exemple).
Une solution serait de dire que la propriété de la map est partagée entre les objets, et donc, je n'ai qu'à la mettre dans un share_ptr. Là, on en arrive aux limites de mon contexte:
- J'ai pas shared_ptr (pas de boost ni C++11, sinon je me ferais plez avec des hash map compile time à base de const_expr)
- Je voudrais que le code reste au plus simple car mon besoin est relativement simple, donc pas question de réimplémenter un shared_ptr maison pour ça ni de faire un truc compliqué.
Comment feriez-vous ?
Partager