Bonjour,
J'ai une classe template qui écoute un port et qui transmet les informations à traiter.
J'utilise alors un design pattern politique pour grossièrement faire :
En fonction de Mode, le mode de transmission des information sera différent.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 template <typename Mode> class Listener { Listener(Type cible); };
Dans le premier cas j'ai besoin d'une liste d'instruction (ListeInstruction pour Mode = Liste) et dans le second j'ai besoin d'une classe de traitement d'instruction (Traitement pour Mode = Param).
J'aimerais donc que la classe passée en paramètre template (Mode) détermine aussi le type "Type".
Le moyen le plus simple que je verrais serait de faire :
Mais je me demande s'il n'existe pas une meilleurs solution.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 template <typename Mode> class Listener { Listener(Mode::Type cible); }; class Liste { public : class Type : ListeInstruction { }; } Listener<Liste>( liste );
Le cas idéal serait de faire un typedef dans les classes Mode (donc dans Liste et Param) qu'on puisse réutiliser dans le constructeur de Listener mais je ne pense pas que ce soit possible...
Qu'en pensez-vous?
Partager