
29 Jun
2011
29 Jun
'11
10:45 a.m.
void DClient::resolveHandler(int param) { .... }
boost::function<void (int)> functionPtr; int tempInt = 12;
functionPtr = boost::bind(&DClient::resolveHandler, this, tempInt); functionPtr(67);
The final line will call resolveHandler with a parameter of 12, rather than 67? Surely that can't be right?
Correct, the function will be called with 12. You can ensure this with this small program: #include <iostream> #include <boost/bind.hpp> #include <boost/function.hpp> void resolveHandler(int param) { std::cout << param << std::endl; } boost::function<void (int)> functionPtr; int tempInt = 12; int main() { functionPtr = boost::bind(&resolveHandler, tempInt); functionPtr(67); }