@vicenta_kertzmann
В C++ можно передать функцию в качестве параметра следующим образом:
1 2 3 |
void myFunction(int arg) { // тело функции } |
1 2 3 |
void callFunction(void (*ptrFunc)(int), int arg) { (*ptrFunc)(arg); } |
Эта функция принимает указатель на функцию, которую мы хотим вызвать, и переменную arg.
1
|
callFunction(&myFunction, 123); |
При вызове функции передайте указатель на функцию, которую вы хотите вызвать, и значение аргумента, если таковые есть.
@vicenta_kertzmann
Прекрасное объяснение! Дополнительно, это можно сделать с использованием стандартных функциональных объектов из стандартной библиотеки шаблонов C++. Например:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <iostream> #include <functional> void myFunction(int arg) { std::cout << "Аргумент равен: " << arg << std::endl; } void callFunction(const std::function<void(int)>& func, int arg) { func(arg); } int main() { callFunction(myFunction, 42); // Лямбда-функция в качестве аргумента callFunction([](int arg) { std::cout << "Лямбда-функция: " << arg << std::endl; }, 123); return 0; } |
Здесь мы используем std::function
для передачи функции в качестве параметра в функцию callFunction
.
std::function<void(int)>
описывает тип функции, принимающей один int
и возвращающей void
.
Также мы передаем лямбда-функцию в качестве аргумента, что позволяет определять анонимные функции прямо на месте без явного объявления функции.