Callback-Funktion mit boost::function
-
Hallo Gemeinde,
ich mache gerade einen Test für eine Callback-Funktion mit boost::function, jedoch habe ich das Problem, das die Funktions-Signatur irgendwie nicht übereinstimmt. Jedoch kann ich den Fehler nicht finden.
#include <boost/function.hpp> #include <iostream> void testCallback(int i) { std::cout << "Callback uebergeben: " << i << std::endl; } void run(int a, void (*callback)(int)) { callback(a); } int main() { boost::function<void (int)> f = testCallback; f(4); run(5, f); return 0; }Wenn ich in der "run" funktion statt f testCallback rein schreibe, funktioniert alles. Aber mit boost::function klappt das irgendwie nicht.
Hat da jemand einen Tipp für mich, was daran falsch ist?
Die Fehlermeldung:
'run': Konvertierung des Parameters 2 von 'boost::function<Signature>' in 'void (__cdecl *)(int)' nicht möglich
1> with
1> [
1> Signature=void (int)
1> ]
1> Kein benutzerdefinierter Konvertierungsoperator verfügbar, der diese Konvertierung durchführen kann, oder der Operator kann nicht aufgerufen werdenAlso laug Fehlermeldung stimmt meine Signature von boost::function nicht. Jedoch funktioniet der aufruf "f(4)"
Bin für jeden Tipp dankbar.
so long
jd
-
"run" muss als zweiten Parameter auch den Typ "boost::function<void(int)>" verlangen, bzw eine const-Referenz darauf. boost::function ist zu komplex, um es auf einen einfachen Funktionszeiger abbilden zu können.
-
Super, danke so funktioniert das.
PS: Jetzt funktioniert das auch mit boost::bind

danke.