Dans le second cas, c est clairement une fonction et args_t s'attend à recevoir une fonction en paramètre donc tout va bien. Dans le premier cas, on appelle une fonction b, mais une fonction ne peut pas recevoir une fonction en paramètre. Au mieux on peut recevoir une référence à une fonction. Il faudrait plutôt écrire :
Merci beaucoup de ta réponse. Tu dis qu'on ne peut pas passer une fonction en paramètre. Mais ça ça marche :
#include <iostream>
template <typename Func>
void a(Func _function)
{
_function();
}
// une fonction quelconque
void b()
{
std::cout<<"b"<< std::endl;
};
int main()
{
a(b);
}
Sinon ta solution fonctionne, merci beaucoup c'est génial. Ça fait un bout de temps que j'essaye plein de choses sans comprendre pourquoi ça ne marche pas, et sans trouver de solution...
Une fonction est automatiquement transformée en pointeur de fonction quand elle est passée en paramètre. La fonction template a est résolue en :
void a<void(*)()>(void (*_function)())
{
_function(); // appel du pointeur de fonction
}
En recherche d'emploi.
Problème de template
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
En recherche d'emploi.
En recherche d'emploi.