@jose
В C++, можно передавать функции как параметры в другие функции. Для этого нужно использовать указатель на функцию или стандартный функциональный объект.
Вот примеры обоих способов:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <iostream> // Пример функции, которая принимает указатель на функцию в качестве параметра void applyFunction(int a, int b, int (*funcPtr)(int, int)) { int result = (*funcPtr)(a, b); std::cout << "Result: " << result << std::endl; } // Пример функции, которую мы будем передавать в качестве параметра int sum(int a, int b) { return a + b; } int main() { // Вызываем функцию applyFunction и передаем в нее указатель на функцию sum applyFunction(3, 4, &sum); return 0; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include <iostream> #include <functional> // Пример функции, которая принимает объект std::function в качестве параметра void applyFunction(int a, int b, std::function<int(int, int)> funcObj) { int result = funcObj(a, b); std::cout << "Result: " << result << std::endl; } // Пример лямбда-функции, которую мы будем передавать в качестве параметра auto product = [](int a, int b) { return a * b; }; int main() { // Вызываем функцию applyFunction и передаем в нее лямбда-функцию product applyFunction(3, 4, product); return 0; } |
Обратите внимание, что в обоих случаях функция applyFunction
принимает два целочисленных параметра a
и b
, а также указатель на функцию или объект std::function
, принимающий два целочисленных параметра и возвращающий целое число.
Кроме того, в обоих примерах мы передаем в функцию applyFunction
функции sum
и product
в качестве параметров. В первом примере мы передаем указатель на функцию sum
с помощью оператора &
, а во втором - объект std::function
, созданный из лямбда-функции product
.