Gérer plusieurs implémentations d'une méthode
Bonjour à tous,
J'ai créé une classe dont deux méthodes ont 2 implémentations chacune. Je souhaiterais comparer l'efficacité des ces 2x2 implémentations.
Comment faire pour qu'il soit facile de passer d'une implémentation à l'autre?
Actuellement, je passe en paramètre de ma classe deux entiers prenant les valeurs 1 ou 2 pour sélectionner l'implémentation:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
| #include <iostream>
class My_class {
public:
My_class(int implem_func1, int implem_func2);
int func1();
int func2();
private:
const int implem_func1;
const int implem_func2;
int func1_implem1();
int func1_implem2();
int func2_implem1();
int func2_implem2();
};
My_class::My_class(int implem_func1, int implem_func2): implem_func1(implem_func1), implem_func2(implem_func2) {}
///////////////////////////////////////
// Definition de la premiere methode //
///////////////////////////////////////
int My_class::func1_implem1() {
return 2+2;
}
int My_class::func1_implem2() {
return 2*2;
}
int My_class::func1() {
if (implem_func1 == 1) {
return func1_implem1();
}
else {
return func1_implem2();
}
}
///////////////////////////////////////
// Definition de la deuxieme methode //
///////////////////////////////////////
int My_class::func2_implem1() {
return 4*3;
}
int My_class::func2_implem2() {
return 4+4+4;
}
int My_class::func2() {
if (implem_func2 == 1) {
return func2_implem1();
}
else {
return func2_implem2();
}
}
int main() {
My_class my_class11(1,1);
std::cout << my_class11.func1() << std::endl;
std::cout << my_class11.func2() << std::endl;
My_class my_class12(1,2);
std::cout << my_class12.func1() << std::endl;
std::cout << my_class12.func2() << std::endl;
My_class my_class21(2,1);
std::cout << my_class21.func1() << std::endl;
std::cout << my_class21.func2() << std::endl;
My_class my_class22(2,2);
std::cout << my_class22.func1() << std::endl;
std::cout << my_class22.func2() << std::endl;
return 0;
} |
Les valeurs des paramètres implem_func1 et implem_func2 étant testées à chaque appel des fonctions func1 et func2, cette solution ne me parait pas satisfaisante.
Qu'en pensez vous?
Merci