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

Передача ф-ции как параметра другой ф-ции - C++

Восстановить пароль Регистрация
 
choojoy
0 / 0 / 0
Регистрация: 14.10.2012
Сообщений: 4
14.10.2012, 12:32     Передача ф-ции как параметра другой ф-ции #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
struct pupil{ 
    char surname[20];   
    int school;     
    int answer[5];
    int num;
    } tmp, a[21];
 
int usl(int i, pupil a[])
{
}
 
int bubble(int i, int n, pupil tmp, pupil a[])
{
} 
 
int main()
{
    bubble(i,n,tmp,a);
    return 0;
}
Нужно передать ф-цию usl в bubble, а потом вызвать из main. Пробовал делать через указатели, но ничего не вышло. Как это сделать?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2012, 12:32     Передача ф-ции как параметра другой ф-ции
Посмотрите здесь:

C++ Массив. Сортировка. Ф-ции
Ф-ции с рекурсиями C++
C++ Прототип ф-ции.
Как перенести параметры из ф-ции printf() в самодельную C++
C++ Задача на написание ф-ции!!!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
14.10.2012, 12:47     Передача ф-ции как параметра другой ф-ции #2
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
#include <iostream>
 
struct pupil{ 
    char surname[20];   
    int school;     
    int answer[5];
    int num;
    } tmp, a[21];
 
 
typedef int (*FunctionPtr)(int i, pupil a[]);
 
 
int usl(int i, pupil a[])
{
  std::cout << "usl function has been called" << std::endl;
  return 0;
}
 
int bubble(int i, int n, pupil tmp, pupil a[], FunctionPtr func)
{
  return func(i, a);
} 
 
int main()
{
    bubble(0, 0, tmp, a, &usl);
    return 0;
}
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
14.10.2012, 12:56     Передача ф-ции как параметра другой ф-ции #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <utility>
 
int foo(const int& i, const char* str)
{
    std::cout << str << std::endl;
    return i;
}
 
template <class T, class... Args>
auto bar(const T& function, Args&&... args)
    -> decltype(function(std::forward<Args>(args)...))
{
    std::cout << "bar()" << std::endl;
    return function(std::forward<Args>(args)...);
}
 
int main()
{
    std::cout << bar(foo, 40, "Hi") + 2 << std::endl;
    return 0;
}
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
14.10.2012, 13:00     Передача ф-ции как параметра другой ф-ции #4
Soon, шаблоны - это конечно же круто. вариадики - еще круче. но автор элементарно не знает как указатель на функцию передать. думаете код с вариадиками ему будет понятен?
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
14.10.2012, 13:03     Передача ф-ции как параметра другой ф-ции #5
DU, не будете спорить, что использовать шаблоны при передаче функции в функцию лучше, чем использовать указатели?
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
14.10.2012, 13:08     Передача ф-ции как параметра другой ф-ции #6
нет. не буду. это может быть оправдано. но не в данном случае.
ваше решение хоть и гибкое, но наверно самое сложное из возможных. вот по простоте наверно так
можно отсортировать:
1 простая передача указателя
2 передача объекта std::function
3 передача объекта построенного из std::bind с навешиванием всех нужных аргументов в точке построения
4 и вот тут только решение с вариадиками
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
14.10.2012, 13:25     Передача ф-ции как параметра другой ф-ции #7
DU, спор ни о чем, каждый останется при своем мнении. Я считаю, что передавать функцию, явно определяя ее тип - удел Си. Поэтому, ваш первый пункт в списке автоматом переходит в конец.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.10.2012, 14:41     Передача ф-ции как параметра другой ф-ции
Еще ссылки по теме:

Какой в С++ аналог ф-ции InputBox? C++
C++ Шаблон ф-ции
Калькулятор на Си. Как реализовать триногометрические ф-ции и функцию логарифм? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
OhMyGodSoLong
14.10.2012, 14:41     Передача ф-ции как параметра другой ф-ции
  #8

Не по теме:

А я считаю, лучше не выделываться и пойти в нормальный функциональный язык, если уж хочется передавать функции как аргументы по-нормальному.

Yandex
Объявления
14.10.2012, 14:41     Передача ф-ции как параметра другой ф-ции
Ответ Создать тему
Опции темы

Текущее время: 02:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru