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

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

Восстановить пароль Регистрация
 
miragex
1 / 1 / 0
Регистрация: 11.07.2012
Сообщений: 124
23.01.2013, 00:50     Объявить функцию в STRUCT {} С++ #1
Доброй ночи
Создаю меню в консоле
Задумка такая - для каждого пункта меню запускать свою функцию
Как функцию объявить в структуре (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; // по нажатию какого-либо меню запускаем нужную функцию
}
Спасибо
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
23.01.2013, 00:55     Объявить функцию в STRUCT {} С++ #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;
}
miragex
1 / 1 / 0
Регистрация: 11.07.2012
Сообщений: 124
23.01.2013, 01:34  [ТС]     Объявить функцию в STRUCT {} С++ #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; // по нажатию какого-либо меню запускаем нужную функцию
}

Спасибо
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
23.01.2013, 02:13     Объявить функцию в STRUCT {} С++ #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)();
////////////////////////
}
Yandex
Объявления
23.01.2013, 02:13     Объявить функцию в STRUCT {} С++
Ответ Создать тему
Опции темы

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