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

标签 javascript c++ function callback signals

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

相关文章:

javascript - Sailsjs websockets 文档去哪儿了?

javascript - 使用 test.BeforeAll 转到页面 URL 以获取 playwright-test runner

C++11 函数模板特化为类方法(如果存在)

c++ - 如何使用 (*mpORBextractorLeft)(in,cv::Mat(),monKeys,Descriptors);

c++ boost::any 在不知道类型的情况下使用值

regex - 从 Notepad++ 中提取 FunctionList 的函数名称

javascript - 回调、匿名函数和上下文

javascript - 确保我的 javascript 是 dom 修改时最后执行的事情

python - 函数参数中裸星号的目的是什么?

php - 如何使用externalInterface让Flash调用javascript来更新屏幕上的值?