Maison > développement back-end > C++ > Comment appeler correctement un pointeur de fonction membre en C ?

Comment appeler correctement un pointeur de fonction membre en C ?

Susan Sarandon
Libérer: 2024-12-31 21:53:10
original
440 Les gens l'ont consulté

How to Correctly Invoke a Member Function Pointer in C  ?

Invocation de pointeurs de fonctions membres : disséquer la syntaxe appropriée

Lorsque vous travaillez avec des pointeurs de fonctions membres, il est crucial de respecter la syntaxe correcte pour garantir exécution réussie. Examinons un problème typique rencontré lors de la tentative d'appel d'une fonction membre via un pointeur de fonction membre et fournissons la solution nécessaire.

L'extrait de code erroné :

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

Erreur de compilation : The bigCat .*pcat(); La déclaration génère une erreur.

Solution :

La clé pour résoudre ce problème réside dans la garantie que l'expression bigCat.*pcat() a la priorité appropriée. La priorité des opérateurs impose que les opérateurs unaires aient priorité sur les opérateurs binaires. Ainsi, des parenthèses sont nécessaires pour donner la priorité à l'appel de fonction () par rapport à l'opération de liaison pointeur vers membre.*.

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

Mettre l'appel de fonction entre parenthèses garantit son exécution en premier, suivie du pointeur de fonction membre. liaison.

Rappelez-vous :

  • Les appels de fonction ont des valeurs plus élevées priorité sur les liaisons de pointeur de fonction membre.
  • Les opérateurs unaires ont priorité sur les opérateurs binaires.
  • Les parenthèses peuvent être utilisées pour contrôler la priorité des opérateurs et garantir un ordre d'exécution correct.

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