如何在C ++中实现以下JavaScript回调实现?以下内容摘自JavaScript代码段。我想实现相同的功能:
var playAdBreak = function(adbreak, callback)
{
var x;
playSingle(x, function() { playAdBreak.call(this, adbreak, callback); });
};
var playSingle = function(abc, callback)
{
};
答案 0 :(得分:1)
如果您在C ++ 11环境下,则可以使用lambda std::function
。下面的代码没有相同的功能,但它可以转换成如下所示,除了:C ++ lambda不是闭包,函数没有this
。
auto playSingle = [&](const T &abc, std::function<void()> callback) {
}
auto playAdBreak = [&](const Y &adbreak, std::function<void()) callback) {
T x;
playSingle(x, [=]() { playAdBreak(adbreak, callback); });
}
答案 1 :(得分:1)
我能想到的谦虚的做法是
void callBackDefinition()
{
printf("I was called");
}
void callBackExecutor(void (*callBack))
{
callBack();
}
main()
{
callBackExecutor(&callBackDefinition);
return 0;
}