Вот простой пример, чтобы начать с ...
void Example(void (*x)(void))
{
x();
}
и вызов будет ...
Example([] { cout << "do something\n"; });
Это очень похоже на ваш C# пример. И есть лучшие, более универсальные способы сделать это, как показывают комментарии. Если бы вы хотели, чтобы вернуть значение и принимать параметр, который вы могли бы сделать что-то вроде этого ...
int Example2(int (*y)(int i), int p)
{
return y(p);
}
// ...
auto ret = Example2([](int p) -> int { cout << p << "\n"; return p; }, 2);
Это было бы похоже на C# версии следующим
int Example2(Func<int,int> y, int p)
{
return y(p);
}
// ...
var ret = Example2((p) => { /*etc*/ return p; }, 2);
google 'std :: function' и' C++ lambda' –
Указатели функций очень удобны ... – owacoder
Функциональные объекты тоже полезны. Поиск в Интернете для 'operator()'. –