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

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

от kennedi_pfeffer , в категории: C/C++ , 8 месяцев назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

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

от craig.emmerich , 8 месяцев назад

@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;
}