C# 动作传递的 C++ 等价物
C++ equivalent for C# Action passing
有人可以帮我找到解决办法吗?我想知道是否有以下 C# 代码的 C++ 等价物:
// C# Code here
private void Execute(Action action)
{
action();
}
可以这样调用:
this.Execute( () => { this.DoA(); this.DoB(); } );
现在我想到的是将对 this.DoA();
和 this.DoB();
的调用包装在另一个方法中并将其作为函数指针传递:
// C++ Code here
void Execute(void (*f))
{
(*f);
}
和
void DoBoth()
{
DoA();
DoB();
}
那么可以这样调用,也可以:
Execute(DoBoth);
但我正在寻找一种无需声明方法的方法DoBoth
。我知道我可以只使用多个参数,但我不想限制参数的数量,因此我希望有一种类似于 C# 的方式。
非常感谢任何帮助。
您要查找的字词是 "lambda expression"。基本上,它是一个匿名函数。
老实说,我对 C++ lambda 的经验为零。
它们似乎已在 C++ 11 中引入,并采用以下形式:
[]() {}
我不会抄袭,而是将您重定向到这个 Whosebug question,它似乎有很好的答案。
有人可以帮我找到解决办法吗?我想知道是否有以下 C# 代码的 C++ 等价物:
// C# Code here
private void Execute(Action action)
{
action();
}
可以这样调用:
this.Execute( () => { this.DoA(); this.DoB(); } );
现在我想到的是将对 this.DoA();
和 this.DoB();
的调用包装在另一个方法中并将其作为函数指针传递:
// C++ Code here
void Execute(void (*f))
{
(*f);
}
和
void DoBoth()
{
DoA();
DoB();
}
那么可以这样调用,也可以:
Execute(DoBoth);
但我正在寻找一种无需声明方法的方法DoBoth
。我知道我可以只使用多个参数,但我不想限制参数的数量,因此我希望有一种类似于 C# 的方式。
非常感谢任何帮助。
您要查找的字词是 "lambda expression"。基本上,它是一个匿名函数。
老实说,我对 C++ lambda 的经验为零。
它们似乎已在 C++ 11 中引入,并采用以下形式:
[]() {}
我不会抄袭,而是将您重定向到这个 Whosebug question,它似乎有很好的答案。