Ich konvertiere Fortran-Code nach C++ und wollte eine richtige Option für den Funktionszeiger finden.C++ Funktionszeiger 'Basis'
Der Fortran-Code ist: Für zwei verschiedene Fälle übergibt er zwei verschiedene Arten von Funktionszeigern an eine andere Funktion. Diese Funktionszeiger haben unterschiedliche Schnittstellen. In C++ muss ich die Schnittstelle des Funktionszeigers angeben und daher ist es nicht einfach. Kann jemand vorschlagen, ob C++ - Funktor oder etwas anderes, das wäre nützlich? Ich wünschte, ich könnte etwas wie "void (function) pointer" und dann "cast" verwenden, aber ich weiß es wirklich nicht. Danke im Voraus.
EDIT: minimal Beispiel in Fortran
Fortran
if(option1) then
call myfunc(abc_function_pointer,otherarguments)
else
call myfunc(xyz_function_pointer, otherarguments)
endif
wo diese Funktionen sind (in C++)
void (*abc_function_pointer)(int, float) //in c++
void (*xyz_function_pointer)(int, int, int) //in c++
Es fällt mir schwer zu verstehen, was der ursprüngliche Code tut (auf hoher Ebene, nicht auf Implementierungsebene), daher ist es schwer, eine C++ - Lösung vorzuschlagen. Könnten Sie vielleicht ein minimales Pseudocode-Beispiel angeben? –
Warum verwenden Sie nicht Klassen und Polymorphie? – littleadv
Können Sie die Funktion überladen? Eine Version akzeptiert (zum Beispiel) int * f1 (int), und eine andere Version akzeptiert (zum Beispiel) int * f2 (double, int). –