Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

В чём смысл использования указателей на функции - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти в тексте максимальное целое число-слово или сообщить, что таких нет. http://www.cyberforum.ru/cpp-beginners/thread1094078.html
Найти в тексте максимальное целое число-слово. Если слов-чисел в тексте нет, то вывести сообщение об этом.
C++ Получить среднее арифметическое разностей вектора наибыстрейшим методом Добрый день! Помогите написать функцию. на входе vector<Point> (vector), доля в % (float). необходимо найти модуль разности Х у точек с одинаковым У, получить среднее арифметическое этой... http://www.cyberforum.ru/cpp-beginners/thread1094068.html
программа с++ на do while с условием C++
Дано натуральное число N. Вычислить =(1-1/2^2)(1-1/3^2)...(1-1/n^2), где n>2 помогите!! написать программу с++ на do while с условием
C++ Решение задачи на ветвление (2 коня и шахматная доска)
Поле шахматной доски определяется парой натуральных чисел, каждое которых не превосходит восьми: первое число – номер вертикали (при счете слева направо), второе – номер горизонтали (при счете снизу...
C++ Ошибка в уловии ( if ). выбрать из списка только тех, чья дата рождения попадает в вводимый с клавиатуры промежуток. http://www.cyberforum.ru/cpp-beginners/thread1094049.html
Задача состояла в том, чтобы из списка выбрать только тех, чья дата рождения попадает в вводимый с клавиатуры промежуток (tm1.tm - это дата начала промежутка, tm2.tm - конечная дата промежутка,...
C++ Написать программу пересчет валюты, курс валюты программа пересчета валюты.курс доллара -30.75 курс евро-39.83 оформить как константы.курс валюты ($ -доллар, e - евро, p - рубль) подробнее

Показать сообщение отдельно
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
11.02.2014, 13:30
ну например есть такое понятие как callback, там без него никак
вот примерно такой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
typedef void (*Func_t1)(int);
 
void F1(int i)
{
    std::cout<<"F1: i = "<<i<<std::endl;
}
 
void F2(int i)
{
    std::cout<<"F2: i = "<<i<<std::endl;
}
 
void Handle(Func_t1 CallBack, int i)
{
    CallBack(i);
}
 
 
int main()
{
    Func_t1 f = &F1;
    Handle(f, 5);
    f = &F2;
    Handle(f, 10);
    system("pause");
    return 0;
}
Добавлено через 10 минут
или что то вроде такого, можно создавать набор ф-ци обработчиков и Выбирать используемый набор

пример не самый ровный но суть передает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
typedef void (*Func_t1)(int);
 
enum HandlerType
{
    eH1 = 0,
    eH2,
    eHMax
};
 
void Empty(int i)
{
    std::cout<<"Empty"<<std::endl;
}
void F1(int i)
{
    std::cout<<"F1: i = "<<i<<std::endl;
}
 
void F2(int i)
{
    std::cout<<"F2: i = "<<i<<std::endl;
}
 
std::vector<Func_t1> GetHandlerSet(HandlerType h)
{
    std::vector<Func_t1> Handlers(eHMax, &Empty);
    static std::vector<std::vector<Func_t1> > HandlersStorage(eHMax, Handlers);
    HandlersStorage[eH1][eH1] = &F1;
    HandlersStorage[eH2][eH2] = &F2;
    return HandlersStorage[h];
}
 
int main()
{
    std::vector<Func_t1> Handlers = GetHandlerSet(eH1);
 
    Handlers[eH1](6);
    Handlers[eH2](7);
 
    Handlers = GetHandlerSet(eH2);
    
 
    Handlers[eH1](8);
    Handlers[eH2](9);
 
    system("pause");
    return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru