boost::bind function wrappen
-
Hallo,
der Titel ist leider Mist, kann es aber schwer beschreiben.
Ich habe folgende Funktion (fest) gegeben:
template <typename A1, typename A2, typename A3, typename A4, typename A5, typename A6> template <class F> Wt::Signals::connection Signal<A1, A2, A3, A4, A5, A6>::connect(const F& function) { if (!impl_) impl_ = new BoostSignalType; return impl_->connect(function, Wt::Signals::at_front); }
Connected wird das so (function f(int) aus C; Signal<int>):
onClick().connect(boost::bind(&C::f, this, ::_1));
Jetzt möchte ich aber statt f eine globale Funktion g binden, die f aufruft, also sowas:
void g(/*f als Parameter*/) { cout << "Jau"; // f aufrufen } // bind irgendwie so: onClick().connect(boost::bind(&g, &C::f, this, ::_1));
Mein Problem ist, das ich mich weder mit boost::bind noch signals genug auskennen und ich nicht verstehe, wie und wo ich den int-Parameter her bekomme, um f aufzurufen.
Wenn zufällig jemand schon ein ähnliches Problem hatte und mit meiner dürftigen Beschreibung klar kommt, wäre super.
Gruß
-
Den reichst du doch an
g()
durch, nicht?void g(void (C::*f)(int), C* self, int i) { cout << "Jau"; (self->*f)(i); }
-
Mmh, ja, ich bin blöd.
g ist eine template-funktion und ich hab die gewohnt bescheidenen template-Fehlermeldungen falsch interpretiert.Dank dir.