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

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

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

Объявить функцию в STRUCT {} С++ - C++

23.01.2013, 00:50. Просмотров 758. Ответов 3
Метки нет (Все метки)

Доброй ночи
Создаю меню в консоле
Задумка такая - для каждого пункта меню запускать свою функцию
Как функцию объявить в структуре (struct), для дальнейшего использования в программе?

Код
#include <iostream>

using namespace std;

struct menu_code
{
    char* nameMenu;
    [COLOR="Blue"].............[/COLOR] function// Тип функции
};

struct menu_code menu_char[] = 
{
    {"формирование символов", [COLOR="Blue"]..........[/COLOR]},
    {"длительность точки (с)", [COLOR="Blue"]..........[/COLOR]},
    {"длительность тире (с)", [COLOR="Blue"]..........[/COLOR]},
    {"Пауза между \".\" & \"-\" одного знака", [COLOR="Blue"]..........[/COLOR]},
    {"Пауза между знаками в слове", [COLOR="Blue"]..........[/COLOR]}
};

void AFunction();
void BFunction();
void CFunction();
void DFunction();
void EFunction();

int main()
{
    .....
    .....
    printf("  %s- %d\n", menu_char[i].nameMenu, menu_char[i].data);
    .....
    .....
    ..... 
     menu_char[i].function; // по нажатию какого-либо меню запускаем нужную функцию
}
Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2013, 00:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Объявить функцию в STRUCT {} С++ (C++):

Как объявить функцию без прототипа - C++
Во всех учебниках пишут, что каждая функция должна иметь прототип. ВОт стало интересно, можно ли объявить функцию, которая не имеет...

Как объявить friend функцию класса - C++
как это оформить, чтобы работало // ----------&gt; one.h #include &quot;two.h&quot; #ifndef ONE_H_INCLUDED #define ONE_H_INCLUDED #include...

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

[C/C++]Не могу объявить static функцию в header файле. - C++
Прочитал про static,и пытаюсь сделать функцию доступной только в пределах одного модуля.Поскольку функции вызывают друг друга(и ещё не...

Можно ли объявить дружественную функцию как шаблон? - C++
Так всё работает: template&lt;class T&gt; class random { /*всячина*/ public: friend void function(random&lt;int&gt;&amp;); ...

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

3
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
23.01.2013, 00:55 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
struct MyStruct{
    void foo();
    //можно и так: 
    //void foo() {std::cout<<"My struct function"<<std::endl;}
};
 
void MyStruct::foo(){
    std::cout<<"My struct function"<<std::endl;
}
 
int main(){
    MyStruct ms;
    ms.foo();
    return 0;
}
1
miragex
1 / 1 / 0
Регистрация: 11.07.2012
Сообщений: 140
23.01.2013, 01:34  [ТС] #3
А как объявить именно где стоят точки в STRUCT?
И что если функции разных типов - как тогда быть???

Код
#include <iostream>
 
using namespace std;
 
struct menu_code
{
    char* nameMenu;
    ............. function// Тип функции
};
 
struct menu_code menu_char[] = 
{
    {"формирование символов", ..........},
    {"длительность точки (с)", ..........},
    {"длительность тире (с)", ..........},
    {"Пауза между \".\" & \"-\" одного знака", ..........},
    {"Пауза между знаками в слове", ..........}
};
 
void AFunction();
int BFunction();
void CFunction();
int DFunction();
bool EFunction();
 
int main()
{
    .....
    .....
    printf("  %s- %d\n", menu_char[i].nameMenu, menu_char[i].data);
    .....
    .....
    ..... 
     menu_char[i].function; // по нажатию какого-либо меню запускаем нужную функцию
}

Спасибо
0
Kuzia domovenok
1957 / 1810 / 142
Регистрация: 25.03.2012
Сообщений: 6,274
Записей в блоге: 1
23.01.2013, 02:13 #4
если ты думаешь, что "функция в структуре" это отдельное поле структуры, которому для каждого экземпляра структуры можно присвоить свою функцию, то ты ошибаешься
То, что ты хочешь - это называется "указатель на функцию".
Да, ты можешь сделать его полем структуры и задать для каждого экземпляра свой.

Добавлено через 7 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
struct menu_code
{
    char* nameMenu;
    void (*function)(void);
};
void AFunction();
void BFunction();
void CFunction();
void DFunction();
void EFunction(); 
struct menu_code menu_char[] = 
{
    {"формирование символов", AFunction},
    {"длительность точки (с)", BFunction},
    {"длительность тире (с)", CFunction},
    {"Пауза между \".\" & \"-\" одного знака", DFunction},
    {"Пауза между знаками в слове", EFunction}
};
int main(){
//////////////////////////////////////
*(menu_char[i].function)();
////////////////////////
}
1
23.01.2013, 02:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2013, 02:13
Привет! Вот еще темы с ответами:

Можно ли объявить два указателя на одну функцию? - C++
есть функция Send(uint type, char*data); но иногда второй аргумент const char*. можно ли сделать так чтобы на одну функцию Send указывали...

Забыл, как объявить функцию с тем же названием? - C++
Забыл, как объявить ещё одну функцию с тем же названием?

как мне в функции main() объявить функцию Do (), подскажите пожалуйста, на таком глупом застрял - C++
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;conio.h&gt; #include &lt;clocale&gt; #include &lt;math.h&gt; using namespace std; class Tem; ...

Как объявить функцию, которая имеет место быть только в некоторых дочерних классах, а базовый класс абстрактный? - C++
Как объявить функцию, которая имеет место быть только в некоторых дочерних классах? Например //Абстрактный базовый класс ...


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

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

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