std::function used with std::bind
suggest changeThink about a situation where we need to callback a function with arguments. std::function
used with std::bind
gives a very powerful design construct as shown below.
class A { public: std::function<void(int, const std::string&)> m_CbFunc = nullptr; void foo() { if (m_CbFunc) { m_CbFunc(100, "event fired"); } } }; class B { public: B() { auto aFunc = std::bind(&B::eventHandler, this, std::placeholders::_1, std::placeholders::_2); anObjA.m_CbFunc = aFunc; } void eventHandler(int i, const std::string& s) { std::cout << s << ": " << i << std::endl; } void DoSomethingOnA() { anObjA.foo(); } A anObjA; }; int main(int argc, char *argv[]) { B anObjB; anObjB.DoSomethingOnA(); }
Found a mistake? Have a question or improvement idea?
Let me know.
Table Of Contents