Bonjour à tous,
J'ai deux enums comme ceci :
Ainsi qu'une classe template comme ceci :
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 enum E_COL { E_COL_0, E_COL_1, E_COL_2; E_COL_COUNT }; enum E_ROW { E_ROW_0, E_ROW_1, E_ROW_2; E_ROW_COUNT };
Lorsque je veux activer un point, il me faut spécialiser cette classe template. Par exemple, la colonne 1 avec la row 2 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 template<E_COL COL, E_ROW ROW> class CColRowHelper { enum { activated = false }; static void DoSomething() {} };
A l'initialisation, toute association colonne / row étant marquée comme "activée", il faut que j'exécute la méthode "DoSomething()"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 template<> CColRowHelper<E_COL_1, E_ROW_2> { enum { activated = true }; static void DoSomething() { /* it does something */ } };
Pour le moment, je ne vois qu'une solution, mais pas mal contraignante, qui serait de répertorier toutes les associations possibles :
N'y aurait-il pas un moyen de faire quelque chose de ce style ? :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if(CColRowHelper<E_COL_0, E_ROW_0>::activated) CColRowHelper<E_COL_0, E_ROW_0>::DoSomething() if(CColRowHelper<E_COL_0, E_ROW_1>::activated) CColRowHelper<E_COL_0, E_ROW_1>::DoSomething()
Merci à vous,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for(int col = 0; col < E_COL_COUNT; ++col) for(int row = 0; row < E_ROW_COUNT; ++row) if(CColRowHelper<col, row>::activated) CColRowHelper<col, row>::DoSomething();
A bientôt
Partager