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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
choojoy
0 / 0 / 0
Регистрация: 14.10.2012
Сообщений: 4
#1

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

14.10.2012, 12:32. Просмотров 371. Ответов 7
Метки нет (Все метки)

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. Пробовал делать через указатели, но ничего не вышло. Как это сделать?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2012, 12:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передача ф-ции как параметра другой ф-ции (C++):

Как перенести параметры из ф-ции printf() в самодельную - C++
Ребят, подскажите как решить задачу. Нужно перенести параметры функции printf() в самодельную ф-цию myfunk(). При условии если булева...

Калькулятор на Си. Как реализовать триногометрические ф-ции и функцию логарифм? - C++
Написал код в котором надо вводить каждый елемент(первое число, знак операции, второе число, знак операции, 3... знак "=") по отдельности....

Прототип ф-ции. - C++
1.Как для данной ф-ции "sort" создать прототип? #include <windows.h> #include <iostream> #include <time.h> #include<stdlib.h>...

Шаблон ф-ции - C++
#include "stdafx.h" #include <iostream> using namespace std; template <class T> T min(T number1,T number2){ T minimum=number1; ...

Ф-ции с рекурсиями - C++
Ребята в этой проге реверс первой строки делается без проблем, но почему-то в последующих строках ф-ция реверс работает не правильно. Уже...

Массив. Сортировка. Ф-ции - C++
:-#include "stdafx.h" #include <iostream> using namespace std; #include <ctime> #define n 11 //константы #define k 10 ...

7
DU
1483 / 1129 / 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;
}
1
soon
2542 / 1307 / 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;
}
0
DU
1483 / 1129 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
14.10.2012, 13:00 #4
Soon, шаблоны - это конечно же круто. вариадики - еще круче. но автор элементарно не знает как указатель на функцию передать. думаете код с вариадиками ему будет понятен?
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
14.10.2012, 13:03 #5
DU, не будете спорить, что использовать шаблоны при передаче функции в функцию лучше, чем использовать указатели?
0
DU
1483 / 1129 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
14.10.2012, 13:08 #6
нет. не буду. это может быть оправдано. но не в данном случае.
ваше решение хоть и гибкое, но наверно самое сложное из возможных. вот по простоте наверно так
можно отсортировать:
1 простая передача указателя
2 передача объекта std::function
3 передача объекта построенного из std::bind с навешиванием всех нужных аргументов в точке построения
4 и вот тут только решение с вариадиками
1
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
14.10.2012, 13:25 #7
DU, спор ни о чем, каждый останется при своем мнении. Я считаю, что передавать функцию, явно определяя ее тип - удел Си. Поэтому, ваш первый пункт в списке автоматом переходит в конец.
0
OhMyGodSoLong
14.10.2012, 14:41     Передача ф-ции как параметра другой ф-ции
  #8

Не по теме:

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.10.2012, 14:41
Привет! Вот еще темы с ответами:

Задача на написание ф-ции!!! - C++
Доброго времени суток:) Нужно написать ф-цию,которая вводит целое число из диапазона от 1 до 32767 и печатает его как последовательность...

Какой в С++ аналог ф-ции InputBox? - C++
Какой в С++ аналог ф-ции InputBox?

Поясните по записи возврата из ф-ции - C++
Вот так люди пишут? int foo() { int n=0; cin&gt;&gt;n; return std::move(n); }

Дружественные ф-ции и ввод строки - C++
День добрый! Столкнулся со следующей проблемой, пользуясь VS6. char str ; cin&gt;&gt; str; вводит до пробела, gets() не работает, getline()...


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

Или воспользуйтесь поиском по форуму:
8
14.10.2012, 14:41
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru