Maison > développement back-end > C++ > Comment appeler correctement une fonction membre à l'aide d'un pointeur en C ?

Comment appeler correctement une fonction membre à l'aide d'un pointeur en C ?

Linda Hamilton
Libérer: 2024-12-24 04:32:13
original
810 Les gens l'ont consulté

How to Correctly Call a Member Function Using a Pointer in C  ?

Appel via un pointeur de fonction membre

En C, les pointeurs de fonction membre nous permettent de traiter les fonctions membres comme des fonctions régulières via des pointeurs. Cependant, certaines règles de syntaxe doivent être respectées pour éviter les erreurs de compilation.

Considérez le code suivant, où nous tentons d'appeler la fonction membre walk de la classe cat à l'aide d'un pointeur de fonction membre :

class cat {
public:
   void walk() {
      printf("cat is walking \n");
   }
};

int main(){
   cat bigCat;
   void (cat::*pcat)();
   pcat = &cat::walk;
   bigCat.*pcat();
}
Copier après la connexion

Le code ci-dessus ne parvient pas à se compiler avec l'erreur "bigCat.*pcat(); l'instruction ne se compile pas." Cela se produit car il y a un problème de priorité avec la syntaxe.

Les pointeurs de fonction membre utilisent l'opérateur ".", tandis que les appels de fonction utilisent des parenthèses normales. La priorité des appels de fonction est supérieure à celle du "". opérateur.

Pour résoudre le problème, des parenthèses supplémentaires sont nécessaires pour remplacer la règle de priorité :

(bigCat.*pcat)();
Copier après la connexion

Avec cette correction, le code appellera désormais correctement la fonction walk via le pointeur de fonction membre .

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal