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

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

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

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

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

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

Вопрос такой

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

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

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

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

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

Как сделать функцию, возвращающую указатель на функцию (которая в свою очередь возвращает указатель на массив) - C++
Изучаю c++ по одной книжке.Она говорить не умеет.. Так вот понадобилось написать функцию,которая как параметр получает указатель на...

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

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

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

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

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

6
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");//использование
0
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[],)) и это заполнять но как выделить память если мы за раннее не знаем его размер (( а после } вызовется диструктор и удалиться если создавать в нутрии функции, а снаружи не знаем сколько памяти выделять чтоб хватило ? может есть какие идеи не прибегая к фишкам с++ решить проблему нужно принимать символы или массив символов и возвращать массив символов
0
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);
}
0
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;
}
0
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
19.10.2012, 17:38 #6
S@morez, зачем вам вообще это надо? вы же понимаете, что строки, записанные в char потом нельзя запустить/выполнить?
0
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 алгоритм
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2012, 11:33
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
23.10.2012, 11:33
Ответ Создать тему
Опции темы

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