C++ 新特性学习(四) — Bind和Function
绑定函数是我认为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++,并且很方便地实现了委托 这就是传说中的绑定库和增强型的函数对象 接下来一个一个来