C ++: Acceso a métodos virtuales
Estoy tratando de usar la tabla de métodos virtuales para llamar a funciones por índice en una clase ... Supongamos que tenemos el siguiente código:
class Base
{
public:
Base() {}
virtual ~Base() {}
virtual Base* call_func(unsigned int func_number)
{
// Some way to call f_n
}
protected:
virtual Base* f_1() const = 0;
virtual Base* f_2() const = 0;
virtual Base* f_3() const = 0;
};
Ya implementé esto utilizando matrices de funciones, if-statement y case-statement ... entonces, ¿hay un mejor enfoque para llamar a los métodos usando solo punteros (por ejemplo, acceso a vtable) o algo así?
Lo siento por mi horrible inglés: S ... y gracias de antemano!
EDIT: Gracias por toda la sugerencia! Voy a ampliar mi pregunta:
Después de resolver esto, voy a crear clases derivadas (por ejemplo, derivadas 1 y derivadas 2) con diferentes implementaciones de f_1, f_2, f_3 y tener un control de clase como este:
class Control
{
protected:
Base* current;
public:
Control(Base* curr = new derived1): current(curr) {}
virtual ~Control()
{
delete current;
}
virtual void do_something(unsigned int func_numb)
{
delete current
Base* new = current->next_state(stl);
current = new;
}
};