error C2664: impossible de convertir le paramètre 1 de 'int' int (__cdecl *)(int)'
avoir une certaine difficulté à passer une fonction en paramètre d'une autre fonction...
D'ERREUR: Erreur 1 error C2664: 'wrapper'
: impossible de convertir le paramètre 1 de
'int' int (__cdecl *)(int)'
int inc( int n )
{
return n + 1 ;
}
int dec( int n )
{
return n - 1 ;
}
int wrapper( int i, int func(int) )
{
return func( i ) ;
}
int main(){
int a = 0 ;
a = wrapper( 3, inc( 3 ) ) ;
return 0 ;
}
OriginalL'auteur tuk | 2011-06-13
Vous devez vous connecter pour publier un commentaire.
Vous êtes de passage le résultat d'un appel de fonction
inc(3)
àwrapper
, PAS un pointeur de fonction qu'il attend.a = wrapper(3, &inc) ;
OriginalL'auteur Mark B
Votre appel est le passage d'un entier, la valeur de retour de l'appel de
inc(3)
, c'est à dire 4.Qui n'est pas un pointeur de fonction.
Peut-être que vous avez voulu dire:
Ce serait le travail, et d'attribuer un à la valeur de l'appel de
int
avec le paramètre3
.OriginalL'auteur unwind
La ligne:
est efficace:
Je pense que tu veux dire:
Ce passe un pointeur à l'inc() fonction que le second argument (wrapper).
OriginalL'auteur janm
Comme il est maintenant,
wrapper
prend unint
et un pointeur vers une fonction qui prend unint
et renvoie unint
. Vous essayez de passer un int et un int, car au lieu de passer le un pointeur vers la fonction, vous êtes appel la fonction et le dépassement de la valeur de retour (unint
). Pour obtenir votre code à travailler en tant que (je pense) vous le souhaitez, modifier votre appel àwrapper
:OriginalL'auteur Seth Carnegie
j'ai eu cette erreur dans mon programme:
parce que j'avais écrit la définition de la méthode au plus tard la méthode principale.
quand je coupe la méthode main et de le coller au plus tard la définition de la fonction, l'erreur supprimé.
OriginalL'auteur alie