将变量传递到lambda
Passing variable into lambda
我的函数作为参数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函数不能转换为正常功能指针。检查这个问题,以获取更多问题。
通常,您有一个回调,允许您包含一个通过的自定义指针,该指针将包含您想要的额外数据。
相关文章:
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- 在 lambda 捕获中声明的变量的类型推导
- 我可以在这里替换什么,因为我不能在 C# 中使用隐式变量的 lambda 函数?
- 在 C++ 中访问 lambda 捕获初始化变量
- Visual C++: MSVC vs. GCC+CLANG: 处理 lambda 捕获类成员变量,正确的方法是什么?
- 作为模板变量的 Lambda
- 变量不在 lambda 的范围内
- 为什么 lambda 采用变量的初始值
- 为什么捕获 lambda 不捕获变量?
- C++ lambda:如何'freeze'局部变量的值?
- 获取具有静态局部变量的绑定/推断捕获 lambda 的函数指针
- Simulink "Access Violation"写入 C++ lambda 函数捕获列表中的 PWork 变量
- C++使用 lambda 初始化变量
- 如何在 lambda 表达式中传递变量?
- C++将 lambda 函数另存为成员变量,而不使用函数指针进行优化
- C++ lambda - 捕获静态成员变量
- 是否有一种方法可以编写此短片而不捕获lambda变量
- 为什么我的全球外部lambda变量在运行时不初始化
- lambda变量捕获
- 使用 auto 在 C++ 中声明 lambda 变量的首选方法是什么