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   -
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 :

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

  1. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    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
    1
  2. scriptiz Messages postés 1494 Statut Membre 425
     
    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);
    }
    0