- 定义一个std::function对象
在使用仿函数时,需要先定义一个std::function对象。例如:
std::function<int(const Frame *)> callback;
- 绑定一个函数或者Lambda表达式
可以将一个函数或者Lambda表达式绑定到std::function对象上,方法如下:
// 绑定一个函数
int refresh_callback(const Frame *frame) {
// do something
}
callback = refresh_callback;
// 绑定一个Lambda表达式
callback = [](const Frame *frame) -> int {
// do something
};
- 调用std::function对象
可以像调用普通函数一样调用std::function对象:
Frame *frame = new Frame();
int result = callback(frame);
- 将std::function对象作为参数传递
可以将std::function对象作为参数传递给其他函数:
void do_something(std::function<int(const Frame *)> callback) {
Frame *frame = new Frame();
int result = callback(frame);
}
do_something(callback);
- 使用std::bind绑定一个成员函数
如果要绑定一个成员函数,可以使用std::bind:
class VideoPlayer {
public:
int refresh_callback(const Frame *frame) {
// do something
}
};
VideoPlayer player;
callback = std::bind(&VideoPlayer::refresh_callback, &player, std::placeholders::_1);
本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=387