我在一个普通的 C 静态库中有这段代码:
extern "C" {
typedef void (__cdecl* VisitChildren)(Option*);
void __cdecl DoVisitChildren(Children* List, VisitChildren Visitor);
}
我正在尝试使用 lambda 从一些 C++ 代码(单元测试)中使用它。
...
DoVisitChildren(children, [&] (Option* option) {
...
});
我收到编译器错误C2664 ... cannot convert parameter 2 from 'unittests::UnitTest1::TestBuild::<lambda_b286d160b9bab3e09ab93cd59fc49f0b>' to 'VisitChildren'
如果我删除捕获'&',它会编译并工作,但我需要捕获一些零碎的东西。
这可能吗?