It's easy to use boost::bind for any function. Let's see an example where bind refers to a free function, a static member function, and a member function.
Notice that a member function could be called for an existing object, or we could create the object on the fly, and in this latter case we could use the nullary functor, that means, also the parameter for the object is passed directly as parameter to bind:
#include <iostream>
#include <string>
#include "boost/bind.hpp"
using std::string;
using std::cout;
using std::endl;
using boost::bind;
namespace
{
class AClass
{
public:
void printString(const string& s) const {
cout << "Member function: " << s << endl;
}
static void staticPrintString(const string& s) {
cout << "Static member function: " << s << endl;
}
};
}
void printString(const string& s)
{
cout << "Free function: " << s << endl;
}
void bind02()
{
bind(&printString, _1)("Hello!");
bind(&AClass::staticPrintString, _1)("Hello!");
AClass c;
bind(&AClass::printString, _1, _2)(c, "Hello!");
bind(&AClass::printString, AClass(), _1)("Hello!");
cout << "Nullary" << endl;
bind(&AClass::printString, AClass(), "Hello!")();
}
No comments:
Post a Comment