如何在C++使用回调?

how to use callback at C++?

本文关键字:回调 C++      更新时间:2023-10-16

我只知道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);
}