ZBLOG

std::function video_refresh_callback_ = NULL; void AddVideoRefreshCallback(std::function callback); 详细说明一下这类仿函数使用的技巧和方法

  1. 定义一个std::function对象 在使用仿函数时,需要先定义一个std::function对象。例如:
std::function<int(const Frame *)> callback;
  1. 绑定一个函数或者Lambda表达式 可以将一个函数或者Lambda表达式绑定到std::function对象上,方法如下:
// 绑定一个函数
int refresh_callback(const Frame *frame) {
    // do something
}
callback = refresh_callback;

// 绑定一个Lambda表达式
callback = [](const Frame *frame) -> int {
    // do something
};
  1. 调用std::function对象 可以像调用普通函数一样调用std::function对象:
Frame *frame = new Frame();
int result = callback(frame);
  1. 将std::function对象作为参数传递 可以将std::function对象作为参数传递给其他函数:
void do_something(std::function<int(const Frame *)> callback) {
    Frame *frame = new Frame();
    int result = callback(frame);
}

do_something(callback);
  1. 使用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

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?