Salut,
En C++, il est possible de stocker des pointeurs de méthode. La syntaxe est lourde mais logique (&Toto::method).
J'aurais besoin de faire un peu la même chose en .NET. Vous allez me dire "les delegate et les events sont faits pour ça", mais dans mon cas je crois que ce n'est pas possible.
Je m'explique :
Je voudrais créer une classe C++ Non managée qui encapsule un objet managé et une méthode de cet objet managé, pour déclencher cette méthode dans certains cas. Mais je n'ai pas trouvé de moyen de récupérer l'adresse d'une méthode managée (et donc, je ne sais pas la déclencher).
Dans l'idéal, voici ce que ça donnerait :
Mais donc, ça ne marche pas (une ne peut récupérer l'adresse d'une méthode non managée).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 template <class T> class Wrapper { public: typedef void (T::*method_t)(void); //methode void f(void); Wrapper(T^ object, method_t method):object(object),method(method) {} void declencher(void) {object->(*method)();} private: gcroot<T^> object; method_t method; };
Et j'insiste : ma classe Wrapper ne peut être managée, je la veux en C++ standard.
Une idée ?
+
Chacha
Partager