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

Массив функций - C++

Восстановить пароль Регистрация
 
linq
1 / 1 / 0
Регистрация: 05.11.2012
Сообщений: 26
31.12.2012, 17:28     Массив функций #1
Необходимо создать во время выполнения массив функций, как такое можно обеспечить?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ogniel
 Аватар для Ogniel
24 / 24 / 1
Регистрация: 30.05.2011
Сообщений: 127
31.12.2012, 17:34     Массив функций #2
не совсем понял. рекурсия?
Dekio
Фрилансер
Эксперт C++
 Аватар для Dekio
5817 / 1215 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
31.12.2012, 17:42     Массив функций #3
Массив указателей на функции
int (*arr[3]) (int, int);
linq
1 / 1 / 0
Регистрация: 05.11.2012
Сообщений: 26
31.12.2012, 18:17  [ТС]     Массив функций #4
Ogniel, нет
Dekio, да, но это на этапе компиляции происходит же. (а нужен динамический массив функций)
go
Эксперт C++
3584 / 1364 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
31.12.2012, 18:24     Массив функций #5
Цитата Сообщение от linq Посмотреть сообщение
Dekio, да, но это на этапе компиляции происходит же. (а нужен динамический массив функций)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
void f(int)
{
   std::cout << "Hello" << std::endl;
}
 
typedef void (*P)(int);
 
int main()
{
   P* arrfun = new P[5];
   arrfun[0] = f;
   arrfun[0](5);
}
http://liveworkspace.org/code/1GZn0b$0

Добавлено через 25 секунд
а про delete[] то и забыл

Добавлено через 25 секунд
C++
1
2
3
4
5
6
7
int main()
{
   P* arrfun = new P[5];
   arrfun[0] = f;
   arrfun[0](5);
   delete[] arrfun;
}
linq
1 / 1 / 0
Регистрация: 05.11.2012
Сообщений: 26
31.12.2012, 18:33  [ТС]     Массив функций #6
Цитата Сообщение от linq Посмотреть сообщение
на этапе компиляции
глупость я какую-то сказал, но не суть, вопрос не отпал

Добавлено через 9 минут
go, хорошо, а если тип может быть любым, то как поступить? Сейчас пробовал с шаблонами, что-то не получилось
go
Эксперт C++
3584 / 1364 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
31.12.2012, 18:35     Массив функций #7
Цитата Сообщение от linq Посмотреть сообщение
go, хорошо, а если тип может быть любым, то как поступить? Сейчас пробовал с шаблонами, что-то не получилось
Тип чего?
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
31.12.2012, 18:36     Массив функций #8
а если не секрет то ради чего такой массив?
linq
1 / 1 / 0
Регистрация: 05.11.2012
Сообщений: 26
31.12.2012, 18:38  [ТС]     Массив функций #9
Nixy, сам пока не знаю.
go, тип функции
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
31.12.2012, 18:44     Массив функций #10
врятли получится что то большее, возвращаемый тип знать необходимо
Nick Alte
Эксперт С++
1594 / 986 / 117
Регистрация: 27.09.2009
Сообщений: 1,902
Завершенные тесты: 1
31.12.2012, 19:03     Массив функций #11
Цитата Сообщение от linq Посмотреть сообщение
сам пока не знаю
Цитата Сообщение от Мишель Монтень
Если не знаешь, куда идешь, придешь не туда.
Чтобы получить осмысленный ответ, надо точно сформулировать, чего хочешь добиться, какую работу должен выполнять такой код.
linq
1 / 1 / 0
Регистрация: 05.11.2012
Сообщений: 26
31.12.2012, 19:28  [ТС]     Массив функций #12
Ну хорошо, нужно создать класс для управления вызовами функций. у класса должны быть две функции: добавление в массив функцию и вызов по индексу из массива.

Задача по себе легкая, но у меня не получается динамически управлять массивами функций, без использования std::function
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1238 / 987 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
31.12.2012, 20:18     Массив функций #13
А вы думали, есть какой-то silver bullet? Чтобы полчить тип "какая-то функция" можно или склепать шаблонный класс и получить менее гибкую, неэффективную и забагованную реализацию std::function, или пользоваться драконовскими указателями типа void (*)(void), которым до лампочки, каким образом функция получит свои аргументы и как будет возвращать результат (или void operator(), те же яйца), или динамическая типизация.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.12.2012, 20:26     Массив функций
Еще ссылки по теме:

Передача массива в несколько функций, чтобы исходный массив не изменялся C++
Массив функций класса C++
Создать массив адресов функций C++
Динамически выделить память под массив функций C++
Создать динамический массив вне функций C++

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

Или воспользуйтесь поиском по форуму:
Nick Alte
Эксперт С++
1594 / 986 / 117
Регистрация: 27.09.2009
Сообщений: 1,902
Завершенные тесты: 1
31.12.2012, 20:26     Массив функций #14
Цитата Сообщение от linq Посмотреть сообщение
Ну хорошо, нужно создать класс для управления вызовами функций
Вот это как раз ответ на вопрос "как делать". А что предполагается таким образом делать, зачем нужен такой класс - неясно.
Yandex
Объявления
31.12.2012, 20:26     Массив функций
Ответ Создать тему
Опции темы

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