C++ Funktionszeiger



  • Hallo,

    ich möchte gerne den Funktionszeiger in C++ verwenden.

    Ich habe eine STL Liste die diverse Funktionsnamen hält, die ich aufrufen möchte.

    Statt einen switch-case Block zu machen, würde ich gerne einen Funktionszeiger machen, und darüber die Methode aufrufen.

    string mathodenaufruf="void output(int)";
        void (*EinfuegeZeiger)(int);
    
        EinfuegeZeiger=mathodenaufruf;
        EinfuegeZeiger(1);
    

    Also im Prinzip, will ich aus einem String (methodendeklaration für Zeiger) einen Methodenzeiger befüllen und die Methode aufrufen.

    Hoffe das war einigermaßen verständlich... Ist das irgendwie möglich?

    Vielen Dank im Voraus.

    Gruß Manuel



  • Ich hab kaum was verstanden. Was genau willst du jetzt? Das da kann jedenfalls nicht funktionieren, zur Laufzeit gibt's keine Funktionsnamen mehr. Erklär mal was du machen willst, nicht wie. Und zwar möglichst umfassend: Was soll das Programm machen.



  • Natürlich geht das. Aber ich zweifle mal an der Sinnhaftigkeit.



  • Ich will im Prinzip einen String an mein Programm übergeben, und er ruft dann die Methode mit dem übergebenen Namen auf.

    Also mal angenommen mein programm kennt die methode void printHallo();

    Nun gibt der User über die Console printHallo ein.
    Jetzt soll die Methode printHallo() aufgerufen werden.

    Da mein Programm jetzt 100 unterschiedliche Methoden hat, und ich keinen riesen Switch bzw if-else block aufmachen will, brauch ich dafür eine Code-arme lösung 🙂



  • std::unordered_map wär wohl eine Lösung.



  • Haben die Funktionen denn alle den gleichen Typ? (Gleiche Rückgabetypen, gleiche Parameter.)



  • Und vor allem: Reden wir da jetzt von Methoden oder Funktionen? Das ist nämlich ein wesentlicher Unterschied...


Anmelden zum Antworten