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

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

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

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

31.12.2012, 17:28. Просмотров 752. Ответов 13
Метки нет (Все метки)

Необходимо создать во время выполнения массив функций, как такое можно обеспечить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.12.2012, 17:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Массив функций (C++):

Дан массив из прототипов функций или указателей на функцию, сделать функцию, возвращающую этот массив - C++
Не охота создавать лишнею тему извиняюсь заранее Вопрос такой Можете подсказать есть массив из прототипов функций или...

Массив функций - C++
Есть функция: bool sota(a& d1, a& d2) {return 1;} Я вызываю её вот так: sort(mas->begin(), mas->end(), sota); Мне нужно сделать...

Fn(string s) - в массив функций - C++
Есть различные функции хэширования string f1(string s) f2(string s) ... fn(string s) как их все вызвать, не нагромождая код? ...

Массив функций класса - C++
Здравствуйте, нужно сделать массив функций drawtext()...drawtext15(), так как я предлагаю не работает пишет идентификатор не найден,...

Создать массив адресов функций - C++
Помогите пожалуйста создать массив адресов функций. Не могу понять как записать это //вид функции bool MyFunc() { ... } ...

Двумерный массив(в виде функций) - C++
#include <iostream.h> #include<conio.h> const int n=3, m=4; void InArray(int a); void Change(int a,int kol); void PrintArray (int...

13
Ogniel
24 / 24 / 1
Регистрация: 30.05.2011
Сообщений: 127
31.12.2012, 17:34 #2
не совсем понял. рекурсия?
0
Dekio
Фрилансер
Эксперт С++
5837 / 1218 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
31.12.2012, 17:42 #3
Массив указателей на функции
int (*arr[3]) (int, int);
0
linq
1 / 1 / 0
Регистрация: 05.11.2012
Сообщений: 26
31.12.2012, 18:17  [ТС] #4
Ogniel, нет
Dekio, да, но это на этапе компиляции происходит же. (а нужен динамический массив функций)
0
go
Эксперт С++
3586 / 1366 / 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;
}
0
linq
1 / 1 / 0
Регистрация: 05.11.2012
Сообщений: 26
31.12.2012, 18:33  [ТС] #6
Цитата Сообщение от linq Посмотреть сообщение
на этапе компиляции
глупость я какую-то сказал, но не суть, вопрос не отпал

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

Задача по себе легкая, но у меня не получается динамически управлять массивами функций, без использования std::function
0
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
31.12.2012, 20:18 #13
А вы думали, есть какой-то silver bullet? Чтобы полчить тип "какая-то функция" можно или склепать шаблонный класс и получить менее гибкую, неэффективную и забагованную реализацию std::function, или пользоваться драконовскими указателями типа void (*)(void), которым до лампочки, каким образом функция получит свои аргументы и как будет возвращать результат (или void operator(), те же яйца), или динамическая типизация.
0
Nick Alte
Эксперт С++
1639 / 1011 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
31.12.2012, 20:26 #14
Цитата Сообщение от linq Посмотреть сообщение
Ну хорошо, нужно создать класс для управления вызовами функций
Вот это как раз ответ на вопрос "как делать". А что предполагается таким образом делать, зачем нужен такой класс - неясно.
0
31.12.2012, 20:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.12.2012, 20:26
Привет! Вот еще темы с ответами:

Одномерные массив (Шаблоны функций) - C++
Задание. Вот задание из одномерных массивов Вот решенное задание из одномерных массивов #include &lt;vcl.h&gt; #pragma...

Шаблоны функций и массив указателей - C++
Задание! Создайте шаблонную функцию maxn(), которая принимает в качестве аргумента массив элементов типа Т и целое число, представляющее...

Шаблоны функций и двумерный массив - C++
Задание следующее: программа работает с двумерным массивом, получает размерность и элементы, выводит матрицу на экран. Далее подсчитывает...

Создать динамический массив вне функций - C++
Кратко говоря, нужно реализовать что-то типа этого: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; void...


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

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

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