• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Registering callback using std::function in C++

Lomanu4 Оффлайн

Lomanu4

Команда форума
Администратор
Регистрация
1 Мар 2015
Сообщения
1,481
Баллы
155
Welcome to the next

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

!

Imagine you're building an application that processes some data and once it's done, the user needs to be notified about the result. Since you don’t want to hard-code the notification logic, it’s better to allow the user to register a custom function that will be called automatically after the data processing completes.

Using std::function for callback registration


One of the most flexible ways to implement callbacks in C++ is by using std::function. std::function can store and invoke any callable object (functions, lambdas, or function objects) that matches a specific signature. The overall syntax is:


std::function<function_return_type(function_argument_types)> name;

Let’s define a ProcessData unction that accepts a callback and notifies the user once processing is complete.


#include <iostream>
#include <functional>
// Type alias for the callback type
using CallbackType = std::function<void(const bool)>;
// Function accepting callback as an argument
void ProcessData(const CallbackType& callback) {
// Simulate data processing
std::cout << "Processing data" << std::endl;
// Notify user via callback
callback(true);
}
// Callback function definition
void Callback(const bool result) {
std::cout << "Callback called! Result: " << result << std::endl;
}

int main() {
// Register a callback using an existing function
ProcessData(Callback);
// Register a callback using lambda function
ProcessData([](const bool result) {
std::cout << "Lambda called! Result: " << result << std::endl;
});
// Register using callable object
CallbackType cb = [](const bool result){
std::cout << "Callable called! Result: " << result << std::endl;
};
ProcessData(cb);
}


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

 
Вверх Снизу