gpt4 book ai didi

javascript - C++ 信号回调(如 javascript)

转载 作者:行者123 更新时间:2023-11-27 22:50:57 26 4
gpt4 key购买 nike

我是 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

另请参阅:Typedef function pointer?

关于javascript - C++ 信号回调(如 javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37233212/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com