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

Comment puis-je appeler correctement un pointeur de fonction membre en C ?

DDD
Libérer: 2024-12-18 14:43:09
original
738 Les gens l'ont consulté

How Can I Correctly Invoke a Member Function Pointer in C  ?

Invocation de pointeur de fonction membre

Lorsque vous travaillez avec des pointeurs de fonction membre, l'exécution de la fonction via le pointeur s'avère souvent difficile. Examinons ce problème plus en détail.

Dans l'extrait de code fourni, une tentative est faite pour invoquer la fonction membre walk de la classe cat via le pointeur de fonction membre pcat. Cependant, la compilation du code ne parvient pas à cause d'une syntaxe incorrecte.

La racine du problème réside dans la priorité des opérateurs. L'opérateur d'appel de fonction (()) a une priorité plus élevée que l'opérateur de liaison pointeur vers membre (.*). De plus, les opérateurs unaires ont priorité sur les opérateurs binaires. Pour résoudre ce problème, des parenthèses supplémentaires sont requises, comme indiqué ci-dessous :

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

En mettant l'appel de fonction entre parenthèses, nous nous assurons qu'il est exécuté en premier, suivi de la liaison du pointeur de fonction membre pcat à l'objet chat bigCat. Cet ajustement permet l'invocation réussie de la fonction membre walk.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal