我有一个函数,其参数为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)’
有什么想法可以通过简单的方式解决吗?
答案 0 :(得分:3)
正如Michael所指出的,闭包不能转换为函数指针。
如果有这样的选项,最好接受模板参数或std::function
而不是原始函数指针。
答案 1 :(得分:0)