cast d'objet et collection de methode.
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
Code:
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;
...
} |
Sauf que j'ai pas bien compris quel est le type de pt2Method.
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
Code:
1 2 3
|
test _obj;
int result = (_obj.*_methods["test::draw"])(); |
Sauf que là, c'est trop facile.
Moi ce que je voudrai faire c'est
Code:
1 2 3 4
|
test _obj;
void *o = &_obj;
int result = (o->*_methods["test::draw"])(); |
Ne sachant pas que o est un pointeur de type <b>test *</b>
Y a t-il moyen de caster dynamiquement o en <b>test *</b> ?
Merci.