Comprendre les pointeurs de fonction surchargés
En C, les fonctions surchargées peuvent introduire une ambiguïté lorsque vous travaillez avec des pointeurs de fonction. Cette ambiguïté se produit car le compilateur ne peut pas déterminer automatiquement quelle surcharge doit être invoquée lorsqu'il lui est présenté une déclaration de pointeur de fonction. Pour clarifier cette désignation et spécifier la surcharge prévue, plusieurs méthodes peuvent être utilisées.
Solution 1 : Utiliser static_cast<>()
Une approche consiste à utiliser le Opérateur de conversion static_cast<>(). Cet opérateur vous permet de lancer explicitement un pointeur de fonction vers la signature de surcharge souhaitée. Par exemple, dans le code ci-dessous, le pointeur de fonction est converti en surcharge qui accepte un argument de caractère :
std::for_each(s.begin(), s.end(), static_cast<void (*)(char)>(&f));
Solution 2 : Déclaration du pointeur de fonction
Alternativement , vous pouvez utiliser une déclaration de pointeur de fonction pour spécifier la surcharge prévue. Le compilateur déduira alors la surcharge appropriée en fonction de la déclaration. Par exemple :
void (*fpc)(char) = &f; std::for_each(s.begin(), s.end(), fpc); // Uses the void f(char c); overload
Considération de fonction membre
Si la fonction surchargée est une fonction membre, vous devrez utiliser le modèle de fonction mem_fun du Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!