绑定函数是我认为C++新标准里第二有用的库了
绑定库的使用环境是:
- GCC-C++ 4.3 及以上
- Visual Studio 2008 SP1 及以上
- BOOST 1.25及以上(其中function是1.16及以上)
先来看一段代码
#include
#include
#include
#include
class button
{
public:
std::function onClick;
};
class player
{
public:
void play(void* sender, int param) {
printf("Play: %d => %d\n", (int)sender, param);
};
void stop(void* sender, int param) {
printf("Play: %d => %d\n", (int)sender, param);
};
};
button playButton, stopButton;
player thePlayer;
void connect()
{
playButton.onClick = std::bind(&player::play, &thePlayer, &playButton, std::placeholders::_1);
stopButton.onClick = std::bind(&player::stop, &thePlayer, &stopButton, std::placeholders::_1);
}
int main () {
connect();
playButton.onClick(0);
return 0;
}
// 以上代码参考boost中bind库示例代码,在G++ 4.6.1中测试通过
木有错,这是C++,并且很方便地实现了委托
这就是传说中的绑定库和增强型的函数对象
接下来一个一个来