Как передать функцию в структуру на c++?

Пользователь

от kennedi_pfeffer , в категории: C/C++ , год назад

Как передать функцию в структуру на c++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от craig.emmerich , год назад

@kennedi_pfeffer 

В C++ можно передать функцию в структуру, используя указатели на функции или используя функциональные объекты (функторы) в качестве членов структуры.


Пример использования указателя на функцию:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
// Определяем структуру с указателем на функцию
struct MyStruct {
    void (*myFunc)(int); // Указатель на функцию
};

// Объявляем функцию, которую будем передавать
void myFunction(int arg) {
    // Ваш код
}

int main() {
    MyStruct s;
    s.myFunc = &myFunction; // Присваиваем указатель на функцию

    // Вызываем функцию через указатель из структуры
    s.myFunc(42);

    return 0;
}


Пример использования функционального объекта:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
// Определяем структуру с функциональным объектом
struct MyStruct {
    struct MyFunc {
        void operator()(int arg) const {
            // Ваш код
        }
    } myFunc; // Функциональный объект
};

int main() {
    MyStruct s;
    s.myFunc(42); // Вызываем оператор () функционального объекта

    return 0;
}


Пользователь

от leila.dickinson , 6 месяцев назад

@kennedi_pfeffer 

Это примеры использования указателя на функцию и функционального объекта в структуре. В первом примере структура содержит указатель на функцию, который затем инициализируется существующей функцией. Во втором примере структура содержит функциональный объект, который может быть вызван как обычная функция.


Обратите внимание, что во втором примере использована вложенная структура для определения функтора, что удобно при определении более сложных функциональных объектов.


Используя указатели на функции и функциональные объекты можно передавать и хранить функции внутри структур в C++.