Bonjour à tous,
J'ai un tableau où pour positionner une valeur, on lui donne la valeur sous forme de void* et on lui indique son type par un identifiant.
Les types de date prennent des double en fait, et il existe également le type double.
J'ai fait ceci :
Pour retrouver le type du tableau en fonction du type C++ je fais ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 enum MesTypes { E_TYPE_INT = 1 E_TYPE_DOUBLE = 2 E_TYPE_FLOAT = 3 E_TYPE_DATE = 4 E_TYPE_INCONNU };
C'est pour la suite que j'ai un soucis, en effet pour les types double, ça peut être un double comme une date. J'ai essayé de faire un alias avec un typedef pour les distinguer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 template<class T> struct TO_MY_TYPE { enum { Value = E_TYPE_INCONNU; } }; template<> struct TO_MY_TYPE<int> { enum { Value = E_TYPE_INT; } }; template<> struct TO_MY_TYPE<float> { enum { Value = E_TYPE_FLOAT; } };
Je pensais que le compilateur aller faire une distinction entre TDate et double mais en fait non, il me lance une erreur indiquant que la spécialisation TO_MY_TYPE<double> existe déjà.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 typedef double TDate; template<> struct TO_MY_TYPE<double> { enum { Value = E_TYPE_DOUBLE; } }; template<> struct TO_MY_TYPE<TDate> { enum { Value = E_TYPE_DATE; } };
Il y a un moyen propre pour distinguer les deux types ?
Merci,
A bientôt
Partager