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

Указатель на функцию с аргументами, как аргумент другой функции - C++

Восстановить пароль Регистрация
 
young_snake
6 / 6 / 2
Регистрация: 26.12.2011
Сообщений: 259
31.10.2015, 12:28     Указатель на функцию с аргументами, как аргумент другой функции #1
У меня есть некая функция, которая принимает как аргумент другую функцию
C++
1
2
3
typedef void(*func_type)();
 
start(func_type ExecFunction);
И все работает нормально, пока мне не понадобились аргументы в функции:
я сделал так
C++
1
typedef void(*func_type)(int, int);
и получил ошибку от компилятора

C++
1
невозможно преобразовать аргумент 1 из "void" в "func_type"
функцию вызываю так
C++
1
2
func_type fun = execF;
start(fun(a,b));
В чем может быть дело?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2015, 12:28     Указатель на функцию с аргументами, как аргумент другой функции
Посмотрите здесь:

C++ Как правильно передать уникальный аргумент в функцию
Указатель на функцию с аргументами по умолчанию C++
Функция как аргумент другой функции C++
C++ Указатель на функцию в вызове другой функции
C++ Аргумент функции - указатель на метод класса
Как передать функции указатель на функцию в качестве аргумента? C++
C++ Можно ли утверждать, что в C++ имя функции - константный указатель на функцию ?
Можно ли передать указатель на функцию как параметр другой функции? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
pav1uxa
1709 / 1549 / 599
Регистрация: 23.01.2014
Сообщений: 5,596
Завершенные тесты: 1
31.10.2015, 12:38     Указатель на функцию с аргументами, как аргумент другой функции #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от young_snake Посмотреть сообщение
В чем может быть дело?
В том что функция start() в качестве аргумента ожидает указатель на тип func_type. А Вы передаете результат функции fun(a, b), который равен void. Можно сделать так, например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
typedef void(*func_type)(int, int);
 
void execF(int a, int b)
{
    std::cout << a+b;
}
 
void start(func_type ExecFunction, int a, int b)
{
    ExecFunction(a, b);
}
 
 
int main ()
{
  int a = 1, b = 2;
  start(execF, a, b);
  return 0;
}
Yandex
Объявления
31.10.2015, 12:38     Указатель на функцию с аргументами, как аргумент другой функции
Ответ Создать тему
Опции темы

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