Hello à tous,
J'ai un soucis sur lequel je bute et je n'arrive pas à trouver de solution malgré mes recherches.
J'ai une bibliothèque en C (je n'ai pas le code) qui me demande à un moment un pointeur sur fonction.
J’écris en C++ et je souhaite passer un membre de mon objet.
Je souhaite ne pas ecrire une fonction static qui prendrait "this" en paramètre pour rappeler mon membre qui devrait être public.
J'essai de m'en sortir avec "std::bind" ou les lambda, sans succès.
Si dessous mon test case :
Code :
- #include <stdio.h>
- #include <functional>
- class A
- {
- private:
- int (*pfn)(int) = nullptr; // CANNOT CHANGE THAT
-
- public:
- int foo(int i) { printf("arg : %d\n", i); return 42; }
-
- void callfoo() {
- pfn = std::bind(&A::foo, this, std::placeholders::_1); // DOES NOT COMPILE
- pfn = [&](int a) { return foo(a); }; // DOES NOT COMPILE
- int ret = pfn(69);
- printf("ret : %d\n", ret);
- }
-
- };
- int main()
- {
- A a;
- a.callfoo();
-
- return 0;
- }
|
Y'a t'il un moyen de s'en sortir ?
Message édité par azubal le 29-03-2020 à 21:06:13