Considere un siguiente código:¿Es posible crear el método call dispatcher en C++?
struct X {
void MethodX() {
...
}
};
struct Y {
void MethodY() {
...
}
};
void test() {
X x;
Y y;
Dispatcher d;
d.Register("x", x, &X::MethodX);
d.Register("y", y, &Y::MethodY);
d.Call("x");
d.Call("y");
}
La cuestión es cómo implementar Dispatcher. No me importa que X e Y puedan heredar de algo, pero Dispatcher debería permitir más clientes (no solo X e Y). Y me gustaría evitar los punteros void * si es posible :)
¿tiene acceso a la biblioteca de impulso? –
¿Podría aclarar "El problema es el tipo de estructura de datos que mantiene los punteros o funtores del método". –
Estaba intentando implementar esto con la plantilla std :: tr1 :: mem_fun. Pero el tipo de resultado tenía dentro del tipo de parámetros. Entonces no pude hacer un vector heterogéneo que lo contenga. –