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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 48, средняя оценка - 4.98
marat1
0 / 0 / 0
Регистрация: 27.05.2010
Сообщений: 6
#1

Как вызвать функцию? - C++

01.06.2010, 22:56. Просмотров 6634. Ответов 6
Метки нет (Все метки)

У меня допустим есть уже готовые функции с именами от а0 до а1000

а мне нужно чтобы прога исходя из входных данных сама высчитала число, добавила его к а, и потом запустила соответствующую функцию
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Manjak
269 / 175 / 7
Регистрация: 12.03.2010
Сообщений: 494
02.06.2010, 01:09     Как вызвать функцию? #2
Если у них сигнатуры одинаковые то вполне логично юзать указатель на функцию
Первое что в голову пришло, хотя я бы от такого кода воздержался в реальных разработках
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#define FUNC(num) &print##num
using namespace std;
 
void print1()
{
    cout << "print1" << endl;
}
void print2() 
{
    cout << "print2" << endl;
}
 
typedef void (*funcPtr)(void);
 
int main()
{
    funcPtr func = FUNC(1);
    (*func)();
    system("pause");
    return 0;
}
marat1
0 / 0 / 0
Регистрация: 27.05.2010
Сообщений: 6
02.06.2010, 15:34  [ТС]     Как вызвать функцию? #3
а мне нужно чтобы в 17 строке
funcPtr func = FUNC(1);
я вместо 1 мог указать какуюто переменную
скажем FUNC(ss);
а он сразу говорит что printss незадекларированная
rangerx
1922 / 1531 / 139
Регистрация: 31.05.2009
Сообщений: 2,894
02.06.2010, 18:19     Как вызвать функцию? #4
Цитата Сообщение от marat1 Посмотреть сообщение
У меня допустим есть уже готовые функции с именами от а0 до а1000
Честно говоря уже попахивает извращением... Для чего такое понадобилось, если не секрет?
Цитата Сообщение от marat1 Посмотреть сообщение
а мне нужно чтобы прога исходя из входных данных сама высчитала число, добавила его к а, и потом запустила соответствующую функцию
Массив указателей на функции...
marat1
0 / 0 / 0
Регистрация: 27.05.2010
Сообщений: 6
02.06.2010, 19:16  [ТС]     Как вызвать функцию? #5
rangerx просту у меня есть функция которая должна в свою очередь запускать иные уже готовые функции. каждый раз изходя из вводных параметров имя фукции меняется
пример

если переременная а = 10
то нужно запустить функцию b10()


может ето дело кто нибуть перевести ето дело в рабочий, минимальній код..... Пожалуйста, я новичок.

Добавлено через 19 минут
rangerx просту у меня есть функция которая должна в свою очередь запускать иные уже готовые функции. каждый раз изходя из вводных параметров имя фукции меняется
пример

если переременная а = 10
то нужно запустить функцию b10()


может ето дело кто нибуть перевести ето дело в рабочий, минимальній код..... Пожалуйста, я новичок.

Добавлено через 27 минут
Manjak а что ты можешь сказать?
rangerx
1922 / 1531 / 139
Регистрация: 31.05.2009
Сообщений: 2,894
03.06.2010, 00:11     Как вызвать функцию? #6
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
void a0(){ puts("in a0"); }
void a1(){ puts("in a1"); }
void a2(){ puts("in a2"); }
 
typedef void (*pFunc)();
 
int main()
{   
   pFunc func[3] = {a0, a1, a2};
   
   func[0]();
   func[1]();
   func[2]();
   return 0;
}
но я с трудом представляю себе программу с 1000 таких функиций...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2010, 14:03     Как вызвать функцию?
Еще ссылки по теме:

Как правильно вызвать функцию с указателем на другую функцию как параметр C++
Как правильно вызвать функцию? C++
Написал функцию и не знаю как ее вызвать C++
C++ Как вызвать функцию чужого приложения, как подменить значения аргументов функции?
Как вызвать функцию из .h в main ? C++

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

Или воспользуйтесь поиском по форуму:
Manjak
269 / 175 / 7
Регистрация: 12.03.2010
Сообщений: 494
03.06.2010, 14:03     Как вызвать функцию? #7
Можно дико извратиться со смещениями в памяти и искать так функции, но это уже неимоверный изврат
Yandex
Объявления
03.06.2010, 14:03     Как вызвать функцию?
Ответ Создать тему
Опции темы

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