S
C++Student schrieb:
Nein, ich will wirklich einen Funktionszeiger haben, der auf eine Funktion zeigt, die ich bis auf den mir unbekannten Rückgabetyp kenne.
Was/Wie/Wo/Warum? Mehr Details bitte. Mehr Beispiele bitte. Du kannst natürlich einen Funktionszeiger vom Typ X* nicht auf eine Funktion vom Typ Y zeigen lassen, wenn X!=Y gilt. Wozu sollte man das auch machen können? So, wie Du Deine Frage formulierst ("Ich will einen Funktionszeiger, ... unbekannten Typ") gibt es klar nur eine Antwort: Geht nicht. Was passt Dir denn an senfers Antwort nicht? Wrapper-Funktionen klingen doch nach 'ner "guten" Idee. (gut in Anführungszeichen, weil sich das, ohne Dein Design zu kennen, schlecht bewerten lässt)
Wrapper deluxe:
#include "boost/any.hpp"
template<typename Ret, Ret (*Fun)(int)>
struct ladida
{
static boost::any wrapper(int x) { return Fun(x); }
};
int f1 (int);
double f2 (int);
int main() {
boost::any (*zeiger)(int);
zeiger = ladida<int,f1>::wrapper;
zeiger(23);
zeiger = ladida<double,f2>::wrapper;
zeiger(42);
}
(ungetestet -- müsste vom Prinzip her gehen)
Gruß,
SP