dir.by  
  Поиск  
Программирование, разработка, тестирование
C++
Передаем функцию как параметр в функцию (callback) | C++
  Посмотрели 982 раз(а)    
 Передаем функцию как параметр в функцию (callback) | C++ 
последнее обновление: 5 декабря 2024
Есть такой тип данных как функция:
std::function< возвращаемый тип (тип1, тип2...) >


Для использования нужно добавить библиотеку:
#include <functional>
 
Объяснение
В C++ можем сделать переменную с простым типом например:
int это число
int myPrice;    // сделали переменную myPrice
myPrice = 10;    // переменной установили значение 10
bool это да или нет
bool hasBook;    // сделали переменную hasBook
hasBook = true;    // переменной установили значение true
В C++ можем сделать переменную со сложным типом например:
std::string это текст

На заметку! для использования нужно добавить:
#include <string>
#include <string>

std::string myName;    // сделали переменную myName
myName = "Evgen";    // переменной установили значение "Evgen"
В C++ можем сделать переменную с очень сложным типом например:
std::function<возвращаемый тип(тип1, тип2, ...)> это функция
#include <functional>

std::function<void(int)> func1;    // сделали переменную func1

func1 = [](int a) { // переменной установили такую функцию
     std::cout << a; // показываем на экран значение переменной a
};
Пример 1
  C++  
#include <iostream>
#include <string>
#include <functional>

int main()
{
     // объявляем переменную func1
     std::function<void(std::string)> func1;

     // в переменную func1 устанавливаем значение (тело функции)
     func1 = [](std::string text) {
          std::cout << text;
     };

     // func1 это переменная указывает на функцию
     func1("Hello!");
     func1("Thank you");
}
Пример 2 Передаем функцию как параметр в функцию (callback)
  C++  
#include <iostream>

#include <string>
#include <functional>
#include <fstream>

// функция ReadTextFile содержит 2 параметра:
// 1-ый переметр это filename (текст)
// 2-ой переметр это callback (функция)
void ReadTextFile(const char* filename, std::function<void(std::string)> callback)
{
     std::ifstream file;
     file.open(filename);
     if (!file)
          return;

     std::string line;
     while (file >> line) {
          callback(line);
     }

     file.close();
}

int main()
{
     // вторым параметром передаем безымянную функцию
     ReadTextFile("d://1.txt", [](std::string line) {
          std::cout << line;
     }
);
}
 
← Предыдущая тема
std::map<Key, Value> это набор ключей и значений в C++. Важная особенность std::map это быстро найти значение по ключу
 
Следующая тема →
Создаем новое OpenGL приложение на C++ | библиотека GLUT, Visual Studio
 
Ваши Отзывы ... комментарии ...
   
Вашe имя
Ваш комментарий (www ссылки может добавлять только залогиненный пользователь)

  Объявления  
  Объявления  
 
dynamic_cast в C++ (преобразование указателя в другой тип и проверка валидности во время выполнения)
std::map<Key, Value> это набор ключей и значений в C++. Важная особенность std::map это быстро найти значение по ключу
Передаем функцию как параметр в функцию (callback) | C++
OpenGL
Создаем новое OpenGL приложение на C++ | библиотека GLUT, Visual Studio
Создаю OpenGL приложение с рисованием 3D пирамид и движущей камерой на C++ | Visual Studio | Библиотека glut для использования OpenGL
Создаем новое OpenGL ES2 приложение на C++ в Windows | Visual Studio, Desktop application

  Ваши вопросы присылайте по почте: info@dir.by  
Яндекс.Метрика