C : Fonction retournant une autre fonction
Sara426
Messages postés
782
Statut
Membre
-
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je programme en C (pas C++ ni C#).
Je voudrais créer une fonction qui retourne une autre fonction mais je ne sais pas quoi écrire dans le return.
Par exemple :
Est-ce que c'est juste ou pas ?
Cordialement.
Sara.
Je programme en C (pas C++ ni C#).
Je voudrais créer une fonction qui retourne une autre fonction mais je ne sais pas quoi écrire dans le return.
Par exemple :
int charCompare(Char c1, Char c2){
...
}
Comparator getComparator(Datatype type){
if(type==CHAR){
return int (*charCompare)(Char c1, Char c2);
}
...
}
Est-ce que c'est juste ou pas ?
Cordialement.
Sara.
2 réponses
-
Salut.
Le plus simple est sans doute de passer par un typedef :typedef type_retour (*fonction1) (types_parametre) ; fonction1 getComparator(datatype D) { ... return charCompare; }
un bon court : http://www.newty.de/fpt/zip/f_fpt.pdf
Voir en particulier la section 2.7. bonne chance.
La vrai soumission c'est quand les esclaves s'inquiètent du cours du coton.
Char Snipeur -
Vu la signature de ta méthode getComparator, je dirais que tu dois retourner un Comparator ;)
Moi pour le qsort je fais comme ceci si ça peut t'aider :typedef int (*cmpfct)(const void*, const void*); int compare(Token *a, Token *b) { if (a->num == b->num) { return 0; } return a->num - b->num; } int main(int argc, const char ** argv) { Tokens t1[10]; /* Remplissage du tableau */ qsort(t1, 10, sizeof(Token), (cmpfct) compare); }