Bonjour,
Je cherche a appeler une méthode d'un objet, sauf que je ne connais ni le type de l'objet, ni même si la méthode existe (au moment de l'appel).
Je sais, dis comme cela, ça ne semble pas possible
Donc ce que j'aimerai faire est une collection de méthodes rangées dans un std::map.
J'ai vu qu'il était possible de récupérer le pointeur d'une méthode
Sauf que j'ai pas bien compris quel est le type de pt2Method.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 class test { public: int a; test() { a = 10; } int draw() { return a; } }; ... int main(int _argc, char **_argv) { int (test::*pt2Method)(void) = NULL; // C++ method pt2Method = &test::draw; ... }
Comment créer une collection std::map<const char*, ???> _methods; pour y ranger les méthodes.
Supposons que j'arrive à mettre mon pt2Method dans _methods["test::draw"], il devrait être possible de faire
Sauf que là, c'est trop facile.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 test _obj; int result = (_obj.*_methods["test::draw"])();
Moi ce que je voudrai faire c'est
Ne sachant pas que o est un pointeur de type <b>test *</b>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 test _obj; void *o = &_obj; int result = (o->*_methods["test::draw"])();
Y a t-il moyen de caster dynamiquement o en <b>test *</b> ?
Merci.
Partager