Maison > développement back-end > C++ > Comment créer des rappels C génériques pour plusieurs classes ?

Comment créer des rappels C génériques pour plusieurs classes ?

Mary-Kate Olsen
Libérer: 2024-12-10 06:31:13
original
983 Les gens l'ont consulté

How to Create Generic C   Callbacks for Multiple Classes?

Rappel C utilisant un membre de classe pour plusieurs classes

Problème :

En C, comment pouvez-vous créer une fonction de rappel générique qui fonctionne avec plusieurs classes, chacune avec son propre membre de rappel function?

Solution :

À l'origine, une méthode de rappel statique et un pointeur vers l'instance ont été utilisés, mais cette approche peut être améliorée. Voici deux solutions alternatives :

Utilisation de C 11 std::function et std::bind:

  1. Définissez un gestionnaire d'événements qui prend un std:: fonction comme argument :
void addHandler(std::function<void(int)> callback);
Copier après la connexion
  1. Liez la fonction de rappel à l'instance en utilisant std::bind:
std::bind(&amp;MyClass::Callback, this, _1)
Copier après la connexion

Utilisation des fonctions Lambda C 11 :

Avec les fonctions lambda, vous pouvez simplifier davantage le code :

handler->addHandler([](int x) { std::cout << "x is " << x << '\n'; });
Copier après la connexion

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!

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