Guten Tag Allen 
Für den Titel ist mir nichts besseres eingefallen.
Ich würde gerne einen dynamischen Methoden aufruf in mein C++ Programm einbauen.
Ich mein damit, dass der User eine Text eingabe macht, zB.: "addieren" und das Programm
ruft die Methode addieren auf, allerdings meine ich nicht eine "if/else" oder "switch"
überprüfung, sondern eine Variante den String direkt als Methode aufzurufen.
Mein Gedanke dabei:
Dass ich zum Beispiel bei einem Taschenrechner eingebe: "addieren"
und das Programm entweder addiert, oder wenn addieren nicht vorhanden ist
einen Fehler ausgibt, dass die Funktion nicht gefunden wurde.
(Ich stelle mir vor dass es eine angenehme Variante zur anbindung von
Erweiterungen wäre, ohne if/else struktur oder fixe Methoden namen, usw...)
Bisherige Tipps von ComFreek (ich hoffe ich darf dich hier nennen
):
zuerst einenicht ganz dynamische Variante aber theoretisch könnte man bei den Erweiterungen eine Methode aufrufen welche die Funktionen in die Map einträgt.
Und die 2te Variante muss erst ausprobiert werden, hier gibt es keine gewährleistung dass sie so funktioniert
Ich wurde gefragt die Frage im Forum zu posten, damit alle mitreden können
(ehrlich gesagt wusste ich nicht nach was ich suchen sollte und nach 15 min erfolgloser Forum & Google Suche, da man mit dynamischen Methoden aufruf oder String und Methode nur andere Ergebnisse bekommt )
mfg,
Doomt

Für den Titel ist mir nichts besseres eingefallen.
Ich würde gerne einen dynamischen Methoden aufruf in mein C++ Programm einbauen.
Ich mein damit, dass der User eine Text eingabe macht, zB.: "addieren" und das Programm
ruft die Methode addieren auf, allerdings meine ich nicht eine "if/else" oder "switch"
überprüfung, sondern eine Variante den String direkt als Methode aufzurufen.
Mein Gedanke dabei:
Dass ich zum Beispiel bei einem Taschenrechner eingebe: "addieren"
und das Programm entweder addiert, oder wenn addieren nicht vorhanden ist
einen Fehler ausgibt, dass die Funktion nicht gefunden wurde.
(Ich stelle mir vor dass es eine angenehme Variante zur anbindung von
Erweiterungen wäre, ohne if/else struktur oder fixe Methoden namen, usw...)
Bisherige Tipps von ComFreek (ich hoffe ich darf dich hier nennen

zuerst einenicht ganz dynamische Variante aber theoretisch könnte man bei den Erweiterungen eine Methode aufrufen welche die Funktionen in die Map einträgt.
ComFreek hat gesagt.:das was du vor hast, würde ich mit einer Look-Up-Map lösen.
Weißt du was eine Map (in der Informatik) ist? Du weist jeweils einem einzigartigen Schlüssel einen Wert zu.
Der Schlüssel wäre in deinem Fall der Methodenname und der Wert der Funktionspointer zu der Funktion.
Erstmal bräuchtest (damit's angenehmer wird) du ein typedef:
Wobei das in den Klammern deinen Typ deiner Funktionen darstellt.C++:typedef [Funktionspointer-Typ] MyPointer;
Danach eine Map definieren:
C++:std::map<std::string, MyPointer>
Diese füllen und jeweils Werte entnehmen
Und die 2te Variante muss erst ausprobiert werden, hier gibt es keine gewährleistung dass sie so funktioniert

ComFreek hat gesagt.:Ich könnte mir noch was mit GetProcAddress() vorstellen.
So in etwa folgendes, keine Ahnung, ob's funktioniert:
C++:typedef void (*MY_FUNC_TYPE)(const char*) ; void helloWorld(const char *str) { MessageBox(NULL, str, "", 0); } HMODULE thisModule = GetModuleHandle(NULL); MY_FUNC_TYPE helloFunc = (MY_FUNC_TYPE) GetProcAddress(thisModule, "helloWorld"); if (helloFunc) { helloFunc(); } else { MessageBox(NULL, "Failed", "", 0); }
Ich wurde gefragt die Frage im Forum zu posten, damit alle mitreden können
(ehrlich gesagt wusste ich nicht nach was ich suchen sollte und nach 15 min erfolgloser Forum & Google Suche, da man mit dynamischen Methoden aufruf oder String und Methode nur andere Ergebnisse bekommt )
mfg,
Doomt