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

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

Войти
Регистрация
Восстановить пароль
 
S@morez
0 / 0 / 0
Регистрация: 21.05.2012
Сообщений: 24
#1

Дан массив из прототипов функций или указателей на функцию, сделать функцию, возвращающую этот массив - C++

18.10.2012, 12:34. Просмотров 636. Ответов 6
Метки нет (Все метки)

Не охота создавать лишнею тему извиняюсь заранее

Вопрос такой

Можете подсказать есть массив из прототипов функций или указателей на функцию

как сделать функцию возвращающею этот массив

char* function()
{
char [ ] = " string (*Fct)(const string&), ...";
}

чтобы в программе можно было его считать ? как это будет выглядеть

мож какието другие способы есть?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2012, 12:34     Дан массив из прототипов функций или указателей на функцию, сделать функцию, возвращающую этот массив
Посмотрите здесь:

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

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

Массив указателей на функцию - C++
Здравствуйте. У меня вопрос: почему данный код компилируется и при вводе, скажем 0 выводит 0, хотя при вводе других значений она крашится....

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

Массив указателей на функцию - C++
#include <iostream> void minimum(int); void printArray(int); void (*processGrade) (int) = {printArray}; При компиляции...

Массив указателей на функцию - C++
Как объявить массив указателей на функцию?

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
18.10.2012, 14:01     Дан массив из прототипов функций или указателей на функцию, сделать функцию, возвращающую этот массив #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
typedef std::function<std::string(const std::string&)> FnString;
 
std::vector<FnString> some_name()
{
   std::vector<FnString> res;
   //...
   return std::move(res);
}
 
std::vector<FnString> data = some_name();//вызов
 
std::string text = data[0]("Hello");//использование
S@morez
0 / 0 / 0
Регистрация: 21.05.2012
Сообщений: 24
18.10.2012, 14:42  [ТС]     Дан массив из прототипов функций или указателей на функцию, сделать функцию, возвращающую этот массив #3
с++ 11 ))) класс

я конечно понимаю что как спросил <мож какието другие способы есть?> а с помощью char можно как то сделать просто предполагается что char везде char и исходя из этого можно как нить пробродить из функции этот массив. Поясню нужно сделать функцию которая рассказывала о себе и копировала содержимое массива наружу (можно сделать класc и его возвращать, vector но это все только в с++ ) в С++ массивы возвращать нельзя ( как мне помнится. Можно сделать функцию которая принимает указатель типа ( void function1 (char *); или void function2(char[],)) и это заполнять но как выделить память если мы за раннее не знаем его размер (( а после } вызовется диструктор и удалиться если создавать в нутрии функции, а снаружи не знаем сколько памяти выделять чтоб хватило ? может есть какие идеи не прибегая к фишкам с++ решить проблему нужно принимать символы или массив символов и возвращать массив символов
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
18.10.2012, 17:19     Дан массив из прототипов функций или указателей на функцию, сделать функцию, возвращающую этот массив #4
S@morez, резюмируя - нужна функция, которая на вход получает char*, создает массив и заносит туда какие-то данные. Тогда забудьте о посте 4 - там я делал массив указателей на функцию.
C++
1
2
3
4
5
6
7
8
void function(char* text)
{
   if(text)delete[] text;
 
   const char copy_text[] = "Hello world!";
   text = new char[strlen(copy_text)+1];
   strcpy(text, copy_text);
}
S@morez
0 / 0 / 0
Регистрация: 21.05.2012
Сообщений: 24
19.10.2012, 17:34  [ТС]     Дан массив из прототипов функций или указателей на функцию, сделать функцию, возвращающую этот массив #5
Цитата Сообщение от I.M. Посмотреть сообщение
S@morez, резюмируя - нужна функция, которая на вход получает char*, создает массив и заносит туда какие-то данные. Тогда забудьте о посте 4 - там я делал массив указателей на функцию.
C++
1
2
3
4
5
6
7
8
void function(char* text)
{
   if(text)delete[] text;
 
   const char copy_text[] = "Hello world!";
   text = new char[strlen(copy_text)+1];
   strcpy(text, copy_text);
}
память выделяется внутри функции и после } удаляется (( было такое решение тоже не помогло
C++
1
2
3
4
5
char** function()
{
      static char mas[][] = { "QString (*Fct)(const QString&)", "int (*fct2)...", ... };
      return mas; 
}
Добавлено через 15 минут
Придумал но это просто нечто ))) ток как мне точно рассчитать длины строк ?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
char** function()
{
    char *pFunction[n];
    pFunction[0] = "string (*Fct)(const string&";
    pFunction[1] = ""int (*fct2)...";
    ....
    pFunction[n-1] = "...";
 
    return pFunction;
}
 
int main(int argc, char *argv[])
{
    char **a;
 
    a=function();
 
    std::cout<<**a; //это вывод первого элемента  как рассчитать размер до второй строки ??
                           // не потеряю ли я данные ведь следующая строка  после } вызовется 
                           //деструктор и удалит память как правильно считать весь массив     
                           // или нужно его статически объявить                    
    return 0;
}
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
19.10.2012, 17:38     Дан массив из прототипов функций или указателей на функцию, сделать функцию, возвращающую этот массив #6
S@morez, зачем вам вообще это надо? вы же понимаете, что строки, записанные в char потом нельзя запустить/выполнить?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2012, 11:33     Дан массив из прототипов функций или указателей на функцию, сделать функцию, возвращающую этот массив
Еще ссылки по теме:

Массив указателей на функцию в классе - C++
Доброго всем времени суток.Пожалуйста помогите разобраться. #include &lt;stdlib.h&gt; #include &quot;iostream&quot; using namespace std; ...

Передать двумерный массив указателей в функцию - C++
Здравствуйте) У меня есть класс Tile и структура Room. Примерно они выглядят таким образом: class Tile { private: ...

Как работает массив указателей на функцию? - C++
void (*ysl_tab ) (float, float *) = {ysl1, ysl2, ysl3, ysl4}; if (YSL == 1) { for (int j = 0; j &lt; 4; j ++) tab = 0; //тут...

необходимо объявить массив указателей на функцию - C++
которая (например) ничё не принимает и возвращает, допустим, значение типа int. Спасибо, кто откликнется.


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

Или воспользуйтесь поиском по форуму:
S@morez
0 / 0 / 0
Регистрация: 21.05.2012
Сообщений: 24
23.10.2012, 11:33  [ТС]     Дан массив из прототипов функций или указателей на функцию, сделать функцию, возвращающую этот массив #7
Цитата Сообщение от I.M. Посмотреть сообщение
S@morez, зачем вам вообще это надо? вы же понимаете, что строки, записанные в char потом нельзя запустить/выполнить?
Это нужно для dll предполагалось задумка чтобы dll возвращала инфу про то, что она может и уже программа работала с этой dll. Задумка не оправдалась это компилируемый язык )) и нужно, чтобы все данные уже были известны на момент компиляции ((. Хотелось сделать, что то вроде программы по роботе с плагинами(.dll). Читал спецификацию по разработке плагинов в фотошопе (gimp тож по этой технологии построен вроде). Понял, что нужно реализовывать общий интерфейс (функцию или что то еще ...) и уже на ее основе писать в нутри dll алгоритм
Yandex
Объявления
23.10.2012, 11:33     Дан массив из прототипов функций или указателей на функцию, сделать функцию, возвращающую этот массив
Ответ Создать тему
Опции темы

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