Bonjour à tous,
Je cherche un moyen d'implémenter une fonction de type 'apply' qui prendrait en parametres une fonction et ses arguments et qui aurait comme but d'appliquer cette fonction à ses arguments.
Exemple:
int specificFunctionToA(A* the_A)
{
//code spécifique à A
}
int specificFunctionToB(B* the_B)
{
//code spécifique à B
}
A* ptrA = new A();
B* ptrB = new B();
// Voici les appels possible à la fonction que je souhaite implémenter
int resultA = functionApply(specificFunctionToA,ptrA);
int resultB = functionApply(specificFunctionToB,ptrB);
Je cherche une fonction de type apply qui puisse prendre un type de fonction donné mais n'importe quel type d'arguments.
J'essai avec les templates et les pointeurs de membres de classe mais ça bloque à l'édition de liens et je pense que je fais fausse route dans mon implémentation.
Mon but est d'avoir une fonction de type apply pour gérer des exceptions et codes retours qui sont levés par les fonctions spécifiques:
template<typename T1, typenameT2> int functionApply(T1 specificFunctionToX,T2 X)
{
//Ici du code ....
try
{
int result = (specificFunctionToX)(X);
}
catch(e1& e)
{
cout<<"On a l'exception e1"<<endl;
//Ici du code propre à e1 ...
}
catch(e2& e)
{
cout<<"On a l'exception e2"<<endl;
//Ici du code propre à e2 ...
}
catch(e3& e)
{
cout<<"On a l'exception e3"<<endl;
//Ici du code propre à e3 ...
}
//Ici encore du code
}
Est-ce que je suis dans la bonne voie ?
Quelqu'un aurait-il une solution ?
Merci d'avance à ceux qui ont une idée.
"La vie, c'est comme une boite de chocolat..."