将变量传递到lambda

Passing variable into lambda

本文关键字:lambda 变量      更新时间:2023-10-16

我的函数作为参数CallbackType,是

typedef (*void) (const *char, bool)

我需要通过其他上下文,所以我认为使用lambdas是个好主意:

CallbackType DelegateHandler(Pointer ptr) {
    return [&](const char* a, bool b) {
        callback(ptr, a, b); 
    };
}

它仅在是捕获的lambda时才有效,而捕获的lambda不能转换为常规功能指针,所以我会收到错误:

no known conversion for argument 1 from SetHandler(Pointer)::<lambda(const char*, bool)>’ to ‘CallbackType’ {aka ‘void(*)(const char*, bool)’ 

任何想法如何以简单的方式解决这个问题?

正如迈克尔已经指出的那样,闭合无法转换为函数指针。

如果有这样的选项,最好接受模板参数或std::function而不是原始功能指针。

包含捕获的lambda函数不能转换为正常功能指针。检查这个问题,以获取更多问题。

通常,您有一个回调,允许您包含一个通过的自定义指针,该指针将包含您想要的额外数据。