我将如何将代码块传递给 C++ 中的函数。在 C# 中我可以做这样的事情:
void Example(Action action)
{
action();
}
Example(() => {
//do something
});
Run Code Online (Sandbox Code Playgroud)
非常感谢所有帮助和提示。
这是一个简单的入门示例......
void Example(void (*x)(void))
{
x();
}
Run Code Online (Sandbox Code Playgroud)
电话将是...
Example([] { cout << "do something\n"; });
Run Code Online (Sandbox Code Playgroud)
这与您的 C# 示例非常相似。正如评论所暗示的那样,有更好、更通用的方法可以做到这一点。如果你想返回一个值并接受一个参数,你可以这样做......
int Example2(int (*y)(int i), int p)
{
return y(p);
}
// ...
auto ret = Example2([](int p) -> int { cout << p << "\n"; return p; }, 2);
Run Code Online (Sandbox Code Playgroud)
这与 C# 版本类似,如下所示
int Example2(Func<int,int> y, int p)
{
return y(p);
}
// ...
var ret = Example2((p) => { /*etc*/ return p; }, 2);
Run Code Online (Sandbox Code Playgroud)