如何在C++使用回调?
how to use callback at C++?
我只知道Lua
function yolo(callback)
if callback then
callback()
end
end
function init()
yolo(function()
Print("Hello World?")
end)
end
我希望在C++使用它
有人可以帮助我吗?
void Delay(int Delay) {
atomic<bool> abort(false);
thread delay([&abort](int delay) {
std::this_thread::sleep_for(std::chrono::milliseconds(delay));
callback();
abort = true;
}, std::ref(Delay));
delay.join();
}
int main()
{
Delay(300, function()
cout << "Hello, World!";
end);
}
这只是我希望的例子,
有人帮我?
我只想在变量回调中使用延迟
这是我尝试过的
void HelloWorld(void(*callback) ()) {
callback();
}
int main()
{
void a()
{
cout << "Hello World?!";
}
HelloWorld(a);
}
C++11 引入了std::function
这是处理函数指针和实现回调机制的好方法。
这样的东西会起作用:
#include <functional>
#include <iostream>
void HelloWorld(std::function<void(void)> fn) {
fn();
}
void callbackFunction() {
std::cout << "Callback function" << std::endl;
}
int main()
{
HelloWorld([]() { std::cout << "Lambda callback" ; });
HelloWorld(callbackFunction);
return 0;
}
void HelloWorld(void(*callback) ()) {
callback();
}
int main()
{
auto x = []() {
std::cout << "Hello World?!";
};
HelloWorld(x);
}
使用此代码调用函数指针。
#include<iostream>
using namespace std;
void HelloWorld(void(*callback) ()) {
callback();
}
void a()
{
cout << "Hello World?!";
}
int main()
{
HelloWorld(a);
}
用于传递参数。
#include<iostream>
using namespace std;
void HelloWorld(void(*callback) (int)) {
callback(9);
}
void a(int a)
{
cout << "Hello World?! value:"<<a;
}
int main()
{
HelloWorld(a);
}
相关文章:
- 架构决策:返回std::future还是提供回调
- 正在为Xtensa simcall函数编写回调函数
- 如何在C++中使用非静态成员函数作为回调函数
- FLTK:按下哪个按钮 - 将数字传递给按钮的回调 (lambda)
- 在简单示例中,Python3 + ctypes 回调会导致内存泄漏
- 用于在回调中调用解析器的设计模式
- 如何使用C++对象的成员函数作为 C 样式回调?
- Java从C++回调到C++回调
- 如何将成员函数作为回调参数传递给需要"typedef-ed"自由函数指针的函数?
- 从不同的 cpp 调用回调函数会导致bad_function_call
- pcap_handler回调仅在使用 NPCAP v0.9991 时包含空数据包
- 不带轮询的 SDL2 事件回调
- C++存储带有可变参数的回调
- 如何使用 Node-addon-API 实现 node-nan 回调
- 处理影响跨不同线程共享对象的定时回调的最佳方法是什么?
- 访问类C++ C 样式回调
- 处理类内的回调时,必须调用对非静态成员函数的引用
- 如果 C 函数仍然可以间接执行(通过回调函数),那么将它声明为静态函数是否是一种不好的做法?
- 在C++中实现回调
- C++ 事件管理器的回调,使用 std::function 和 std:bind 以及派生类作为参数