C ++: Zugreifen auf virtuelle Methoden

Ich versuche, die virtuelle Methodentabelle zu verwenden, um Funktionen nach Index in einer Klasse aufzurufen ... Angenommen, wir haben den folgenden Code:

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;
};

Ich habe dies bereits mithilfe von Funktionsarrays, if-Anweisung und case-Anweisung implementiert. Gibt es einen besseren Ansatz, um Methoden nur mit Zeigern (z. B. Zugriff auf die vtable) oder ähnlichem aufzurufen?

Entschuldigung für mein schreckliches Englisch: S ... und vielen Dank im Voraus!

EDIT: Danke für den ganzen Vorschlag! Ich werde meine Frage erweitern:

Nach dem Beheben dieses Problems werde ich abgeleitete Klassen (zum Beispiel abgeleitete 1 und abgeleitete 2) mit verschiedenen Implementierungen von f_1, f_2, f_3 erstellen und eine Klassensteuerung wie diese haben:

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;
    }
};

Antworten auf die Frage(4)

Ihre Antwort auf die Frage