Funktionsname in Variable gespeichert - wie aufrufen?
-
#wieso willst du meinen char zu 'nem string verkorksen? ist doch für sechs zeichen nicht wirklich notwendig, oder?
aber egal...
wie kann ich eine funktion aufrufen, wenn ich deren name nicht weiß, sondern dieser lediglich in einer varible mit bekanntem namen gespeichert ist?
-
Das kannst du nur machen, indem du einen assoziativen Container verwendest, aus dem du dir zu einem Namen (String) den Funktionszeiger raussuchst. Den Container musst du vorher füllen.
Einen anderen, automatischen Mechanismus gibt es nicht, weil zur Laufzeit keine Informationen über die Funktionsnamen mehr vorhanden sind.
-
danke für den ratschlag, aber soweit sind meine kenntnisse nocht nicht gediehen
container höre im im zusammenhang mit c++ das ersten mal, und bei zeigern bin ich auch noch nicht gewesen.
wäre es machbar, wenn du deine antwort in drei zeilen code umsetzt?
-
sebastian schrieb:
wäre es machbar, wenn du deine antwort in drei zeilen code umsetzt?
Nein, drei Zeilen reichen da bei weitem nicht aus.
Das, was du da vorhast, geht mit C++ nicht wirklich gut. Am besten erklärst du einfach mal, warum du glaubst, so etwas zu brauchen. Vielleicht findet sich eine andere Vorgehensweise, die sich einfacher umsetzen lässt.
-
hmm...ja, naürlich gibt es eine alternative.
im wesentlichen wollte ich das einsetzen, um damit eine schnelle navigation zu ermöglichen. ich habe evrscheidene funtkionen, die lauten Chapter_0(), Chapter_1(), Chapter_2(), Chapter_return(), usw.
Da es sich bei 0, 1, 2, return, etc. immer um eingaben des users handelt, wollte ich ein schema a la
if (strUsrInpt == "return")
{
Chapter_return();
}
vermeiden, und diese funktionen direkt aufrufen und nur davor kurz prüfen, ob strUsrInpt eines der schlüsselwörter/zahlen (1, 2, return...) enthält und nicht für jedes eine neue if-abfrage machen.kann mir da ansonsten keine lösung mehr vorstellen...(bei php geht sowas elegant mit 2 zeilen :/)
-
Schau dir mal ne map an, und such mal nach Funktionszeigern.
Devil
-
sebastian schrieb:
...und nicht für jedes eine neue if-abfrage machen.
switch?
-
sebastian schrieb:
und nicht für jedes eine neue if-abfrage machen.
kann mir da ansonsten keine lösung mehr vorstellen...(bei php geht sowas elegant mit 2 zeilen :/)
Warum nicht? Ist sauberer und hat hat auch nix mit Performance zu tun! (Viele möchten ja immer aus den unsinnigsten Sachen Speed holen).
Bei PHP geht sowieso fast alles! Deswegen ist ja jeder Schüler Webdesigner und PHP Programmierer.
-
Verzweifelter schrieb:
sebastian schrieb:
und nicht für jedes eine neue if-abfrage machen.
kann mir da ansonsten keine lösung mehr vorstellen...(bei php geht sowas elegant mit 2 zeilen :/)
Warum nicht? Ist sauberer und hat hat auch nix mit Performance zu tun! (Viele möchten ja immer aus den unsinnigsten Sachen Speed holen).
Bei PHP geht sowieso fast alles! Deswegen ist ja jeder Schüler Webdesigner und PHP Programmierer.
also wenn es mir um eines nicht geht, dann um speed
will einfach nur sauberen code schreiben und mir kamen halt etwa 200 if-abfragen, die irgendwie nach automatisierung schreien, etwas unelegant vor...aber da das die einzig sinnvolle möglichkeit scheint...*sich mal if-anweisungen in die zwischenablage lad...*
-
sebastian schrieb:
will einfach nur sauberen code schreiben und mir kamen halt etwa 200 if-abfragen, die irgendwie nach automatisierung schreien, etwas unelegant vor...
Willst Du mal etwas mehr zu Deinem Programm erzählen und warum Du gerade 200 Abfragen brauchst? Ich glaube Dein Design hat wohl eher einen Fehler.
Übrigens verwendet man, wie godlikebot schrieb, bei mehreren Abfragen einen switch Block.