Bonjour à tous,
Je me retrouve dans cette situation ci :
Les valeurs de A et B sont connues et comprises entre 0 et 5.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 template struct Test<int A, int B> { static void run(); }; template<> struct test<0, 0> { /* code spécifique */ }; template<> struct test<0, 1> { /* code spécifique */ }; template<> struct test<1, 0> { /* code spécifique */ }; template<> struct test<1, 1> { /* code spécifique */ };
Mon soucis c'est qu'étant donné que je suis dans un mode webservice, les valeurs A et B sont passées par l'utilisateur du service en chaîne de caractères que j'aurais préalablement parsé.
Je me retrouve donc avec une fonction :
Dont le contenu doit appeler :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 void run(int iA, int iB);
Bien évidemment ça ne fonctionne pas étant donné que les paramètres iA et iB ne sont pas constants.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Test<iA, iB>::run();
Alors je cherche une solution pas trop dégueulasse pour pallier contourner cette erreur.
Par exemple générer des fonctions de ce type, via probablement des macros ?
Ce qui serait bien c'est que ces fonctions soient générées automatiquement, parce que aujourd'hui les valeurs vont de 0 à 5, mais demain ça pourra aller jusqu'à 10, 20, 30, et ça va devenir compliqué de générer cette "matrice" de fonction.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void run_test_0_0() { Test<0, 0>::run(); }
J'ose croire qu'à la compilation, en utilisant macro et template récursif, on peut faire quelque chose du genre "GenerateFunctions<5, 5>" et que ça génère l'ensemble plutôt que le faire (et surtout le maintenir) à la main ?
Merci d'avance pour vos réponses,
A bientôt![]()
Partager