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
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
En C ++, quand et comment utilisez-vous une fonction de rappel? EDIT: Je voudrais voir un exemple simple pour écrire une fonction de
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 Java...
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>...
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...
Pourquoi les travaux suivants fonctionnent-ils? void foo() { cout << "Foo to you too!\n"; }; int main() { void (*p1_foo)() = foo; void (*p2_foo)() = *foo; void (*p3_foo)() = &foo; void (*p4_foo)() = *&foo; void (*p5_foo)() = &*foo; void (*p6_foo)() = **foo; void (*p7_foo)() =...
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} {}...
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 façon...
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...
Comment utiliser un tableau de pointeurs de fonction en C? Comment puis-je les
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 +...
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 donné que...
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...
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 = %d", a , b , a...
Comment obtenir un pointeur de fonction pour une fonction membre de classe et appeler ultérieurement cette fonction membre avec un objet spécifique? J'aimerais écrire: class Dog : Animal { Dog (); void bark (); } … Dog* pDog = new Dog (); BarkFunction pBark = &Dog::bark; (*pBark) (pDog); … De...
Je jouais avec les lambdas C ++ et leur conversion implicite en pointeurs de fonction. Mon exemple de départ les utilisait comme rappel pour la fonction ftw. Cela fonctionne comme prévu. #include <ftw.h> #include <iostream> using namespace std; int main() { auto callback = [](const...
Je voudrais configurer un pointeur de fonction en tant que membre d'une classe qui est un pointeur vers une autre fonction de la même classe. Les raisons pour lesquelles je fais cela sont compliquées. Dans cet exemple, je voudrais que la sortie soit "1" class A { public: int f(); int (*x)(); } int...
Disons que j'ai une fonction qui accepte un void (*)(void*)pointeur de fonction à utiliser comme rappel: void do_stuff(void (*callback_fp)(void*), void* callback_arg); Maintenant, si j'ai une fonction comme celle-ci: void my_callback_function(struct my_struct* arg); Puis-je faire cela en toute...
Je ne peux pas comprendre ceci: int main() { int (*) (int *) = 5; return 0; } L'affectation ci-dessus se compile avec g ++ c ++ 11. Je sais que int (*) (int *)c'est un pointeur vers une fonction qui accepte un (int *)comme argument et renvoie un int, mais je ne comprends pas comment vous pourriez...