我是 C++ 的新手,我正在尝试在学习新语言的同时移植一些 javascript 脚本。
我正在尝试寻找使用回调的解决方案,例如 javascript,尤其是 js-signals图书馆
下面是一个javascript脚本。它可以转换为C++吗?如何?如果不是,最好的解决方案是什么?
Javascript
var ns = {
_callback: null,
setUpdate: function(callback) {
ns._callback = callback;
},
update: function() {
// do some default things
ns._callback();
}
};
ns.setUpdate(function() {
console.log("I'm Changed"); // will be: std::cout << "I'm Changed\n";
});
C++
namespace ns {
// ??
};
// ns::setUpdate(??);
最佳答案
你可以使用一个函数指针,像这样:
#include <cstdio>
namespace ns {
// defines a type named Callback that is a pointer
// to a function that takes void and returns void
typedef void (*Callback)();
Callback _callback;
void setUpdate( Callback cb) {
_callback = cb;
}
void update() {
_callback();
}
}
void MyUpdate() {
printf("hello from callback\n");
}
int main(int argc, char* argv[]) {
ns::setUpdate(MyUpdate);
ns::update();
}
输出:
hello from callback
关于javascript - C++ 信号回调(如 javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37233212/