[C++] template de fonction
Résolu/Fermé
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
-
17 déc. 2007 à 17:04
mamiemando Messages postés 33264 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 13 septembre 2024 - 18 déc. 2007 à 09:29
mamiemando Messages postés 33264 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 13 septembre 2024 - 18 déc. 2007 à 09:29
A voir également:
- [C++] template de fonction
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Fonction somme excel - Guide
- Fonction filtre excel n'existe pas - Forum Excel
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
3 réponses
mamiemando
Messages postés
33264
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
13 septembre 2024
7 777
17 déc. 2007 à 21:38
17 déc. 2007 à 21:38
En fait tu peux passer en paramètres template un foncteur.
Ce qui donne :
Je rappelle au passage que toute structure template doit être intégralement dans un .hpp, sinon elle n'est utilisable que dans le fichier source dans lequel elle est implémentée. Bien entendu tu n'es sensé qu'inclure des headers, donc les structures, classes et fonctions templates sont en général implémentées dans un header.
Bonne chance
#include <iostream> template <typename T> struct add_f{ inline T operator()(const T & x,const T & y) const{ return x + y; } }; template <typename T> struct mult_f{ inline T operator()(const T & x,const T & y) const{ return x * y; } }; template <typename T,typename F> T appliquer_foncteur(const T & x,const T & y){ return F()(x,y); } int main(){ { typedef add_f<int> add_int; int x = 5, y = 6; std::cout << appliquer_foncteur<int,add_int>(x,y) << std::endl; } { typedef mult_f<float> mult_float; float x = 6.9, y = 2.8; std::cout << appliquer_foncteur<float,mult_float>(x,y) << std::endl; } return 0; }
Ce qui donne :
11 19.32
Je rappelle au passage que toute structure template doit être intégralement dans un .hpp, sinon elle n'est utilisable que dans le fichier source dans lequel elle est implémentée. Bien entendu tu n'es sensé qu'inclure des headers, donc les structures, classes et fonctions templates sont en général implémentées dans un header.
Bonne chance
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
17 déc. 2007 à 23:08
17 déc. 2007 à 23:08
Ok, merci de la réponse.
C'est pas évidant, je vais regarder ça de plus près.
La solution que j'applique est un peut différente, mais fonctionne.
class matrice{
//divers memebre de la classe
matrice fct(double f(double));
}
ce qui permet de faire une fonction non défini de la façon suivante :
matrice A;
A.fct(fonction_a_appliquer_a_la_matrice).
C'est pas évidant, je vais regarder ça de plus près.
La solution que j'applique est un peut différente, mais fonctionne.
class matrice{
//divers memebre de la classe
matrice fct(double f(double));
}
ce qui permet de faire une fonction non défini de la façon suivante :
matrice A;
A.fct(fonction_a_appliquer_a_la_matrice).
mamiemando
Messages postés
33264
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
13 septembre 2024
7 777
18 déc. 2007 à 09:29
18 déc. 2007 à 09:29
Ben en C il était déjà possible de passer un pointeur de fonction si tu vas dans ce sens. Cf la fonction qsort par exemple.
Bonne chance
Bonne chance