Funktion mit Parametern als Parameter
-
Hallo!
Ich habe eine Funktion die ich aufrufe und der ich eine andere Funktion als Argument übergebe - um die Ausführungszeit zurückzugeben:
template<typename func> long dur(func function){ long start=GetTickCount(); function(); return GetTickCount()-start; }
Diese rufe ich dann mit irgendeiner parameterlosen Funktion auf.
int main(){ dur(foo); return 0; }
Nun würde ich auch gerne Funktionen aufrufen denen ich Parameter mitgeben kann...
Alsoint main(){ int a,b; ... dur(foo(a,b)); return 0; }
Meine Frage ist nun wie ich das bewerkstelligen kann, denn ich erhalte logischerweise den Fehler
error C2064: Ausdruck ergibt keine Funktion, die 0 Argumente übernimmt
für den Aufruf von function() in der Funktion dur.
Danke im Voraus
MfG
-
Falls du offen für std::tr1 oder boost bist, damit geht das alles einfacher:
template<typename Func> long dur(Func function) { long start=ugly_windows_get_tick_count(); function(); return ugly_windows_get_tick_count()-start; } int main() { dur(std::tr1::bind(foo, a, b)); // return 0 brauchts nicht }
-
typedef void(*pt2Func)(float, float)
-
moll->dur schrieb:
int main() { ... // return 0 brauchts nicht }
Bitte?
Ein Funktion mit Rückgabe-Typ gibt immer etwas zurück, es sei denn du
wirst eine Exception!
-
wenn nicht anders angegeben gibt main stets 0 zurueck.
-
Bitte? schrieb:
moll->dur schrieb:
int main() { ... // return 0 brauchts nicht }
Bitte?
Ein Funktion mit Rückgabe-Typ gibt immer etwas zurück, es sei denn du
wirst eine Exception!Das stimmt, nur gibt main 0 zurück, wenn nicht anders angegeben. Es ist die einzige Funktion, in der das return implizit geschehen darf, d. h.
int foo() { // return 0; // darf nicht weggelassen werden } int main() { cout << foo(); // undefiniert // return 0; // hier darf es weggelassen werden }