simplifier un code en remplaçant un switch
Bonjour,
j'ai fait une portion de code qui me permet de trier un vecteur d'une structure. Je doit pouvoir choisir quel membre à utiliser pour le trie. Cela donne :
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
| switch(m_sortFlag)
{
case DESCENDINGORDER | IDMAILBOX:
qStableSort
(
m_internal.begin(),
m_internal.end(),
std::binary_negate<compareIdMailBox>(compareIdMailBox())
);
break;
case ASCENDINGORDER | IDMAILBOX:
qStableSort
(
m_internal.begin(),
m_internal.end(),
compareIdMailBox()
);
break;
case DESCENDINGORDER | IDEMAIL:
qStableSort
(
m_internal.begin(),
m_internal.end(),
std::binary_negate<compareIdEmail>(compareIdEmail())
);
break;
case ASCENDINGORDER | IDEMAIL:
qStableSort
(
m_internal.begin(),
m_internal.end(),
compareIdEmail()
);
break;
...
} |
Ce commence à être lourd en écriture.
Comme tout doit être connue à l'exécution, je ne voie pas trop comment me passer de ce switch.
Je pensais faire une fonction template pour simplifier l'écriture du trie (et donc au lieu de plusieurs foncteur, j'en aurais qu'un mais template).
Après je ne voix pas pour le switch... J'ai l'impression que cela serait possible avec les template variadique, mais comme visual de fait encore du c++0x, je peut pas tester.
Si quelqu'un à une idée.
:merci: