Un pointeur de fonction est un pointeur vers une fonction, qui peut être stockée dans une variable. Il permet un choix au moment de l'exécution de la fonction à exécuter.
J'ai eu récemment de l'expérience avec les pointeurs de fonction en C. Donc, poursuivant la tradition de répondre à vos propres questions, j'ai décidé de faire un petit résumé des bases, pour ceux qui ont besoin d'une plongée rapide sur le sujet.
J'ai une méthode qui fait environ dix lignes de code. Je veux créer plus de méthodes qui font exactement la même chose, à l'exception d'un petit calcul qui va changer une ligne de code. C'est une application parfaite pour passer un pointeur de fonction pour remplacer cette seule ligne, mais …
J'essaie de stocker dans un std::tuplenombre variable de valeurs, qui seront plus tard utilisées comme arguments pour un appel à un pointeur de fonction qui correspond aux types stockés. J'ai créé un exemple simplifié montrant le problème que j'ai du mal à résoudre: #include <iostream> #include <tuple> void f(int a, …
J'ai toujours été un peu perplexe quand j'ai lu le code d'autres personnes qui avait des typedefs pour les pointeurs vers les fonctions avec des arguments. Je me souviens qu'il m'a fallu un certain temps pour arriver à une telle définition tout en essayant de comprendre un algorithme numérique écrit …
Est-il possible de passer une fonction lambda en tant que pointeur de fonction? Si c'est le cas, je dois faire quelque chose de mal car je reçois une erreur de compilation. Considérez l'exemple suivant using DecisionFn = bool(*)(); class Decide { public: Decide(DecisionFn dec) : _dec{dec} {} private: DecisionFn _dec; …
Je viens de voir une photo aujourd'hui et je pense que j'apprécierais des explications. Voici donc l'image: J'ai trouvé cela déroutant et je me suis demandé si de tels codes étaient jamais pratiques. J'ai googlé l'image et j'ai trouvé une autre image dans cette entrée reddit, et voici cette image: …
Existe-t-il un moyen de passer une fonction de rappel dans une méthode Java? Le comportement que j'essaie d'imiter est un délégué .Net passé à une fonction. J'ai vu des gens suggérer de créer un objet séparé, mais cela semble exagéré, mais je suis conscient que parfois exagérer est la seule …
Pour une classe, je souhaite stocker des pointeurs de fonction vers des fonctions membres de la même classe dans un objet de mapstockage std::function. Mais j'échoue dès le début avec ce code: class Foo { public: void doSomething() {} void bindFunction() { // ERROR std::function<void(void)> f = &Foo::doSomething; } }; …
J'ai trouvé du Ccode qui imprime de 1 à 1000 sans boucles ni conditionnelles : mais je ne comprends pas comment cela fonctionne. Quelqu'un peut-il parcourir le code et expliquer chaque ligne? #include <stdio.h> #include <stdlib.h> void main(int j) { printf("%d\n", j); (&main + (&exit - &main)*(j/1000))(j+1); }
C'est peut-être quelque chose de commun et d'insignifiant, mais il me semble que j'ai du mal à trouver une réponse concrète. En C #, il existe un concept de délégués, qui est fortement lié à l'idée des pointeurs de fonction de C ++. Existe-t-il une fonctionnalité similaire en Java? Étant …
J'ai lu que la conversion d'un pointeur de fonction en un pointeur de données et vice versa fonctionne sur la plupart des plates-formes mais n'est pas garantie de fonctionner. pourquoi est-ce le cas? Les deux ne devraient-ils pas être simplement des adresses dans la mémoire principale et donc être compatibles?
La question est la suivante: considérez ce morceau de code: #include <iostream> class aClass { public: void aTest(int a, int b) { printf("%d + %d = %d", a, b, a + b); } }; void function1(void (*function)(int, int)) { function(1, 1); } void test(int a,int b) { printf("%d - %d …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.