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

Как передать функции через метод класса - C++

Восстановить пароль Регистрация
 
Bretbas
22 / 17 / 1
Регистрация: 05.08.2013
Сообщений: 468
Завершенные тесты: 1
09.08.2013, 22:25     Как передать функции через метод класса #1
Добрый вечер всем!
Столкнулся с проблемкой

К примеру у меня есть 3 функции.Я хочу в 4 функцию дать массив названий этих 3 функций,чтобы распределять в каких моментах их использовать.Ну вот как-то так объяснил)

К примеру у меня есть класс Меню в консоли.Я методом задаю список меню самого.Отдельно пишу функции,которые будут выполняться по нужному списку меню,и в еще одном методом,передаю массивом названия на эти функции,чтобы их использовать по заданному списку

К примеру:
задал методом option() список:
Start
Option
Exit

То есть у меня 3 элемента списка меню.

За тем я пишу отдельно функции для каждого элемента списка меню - функция start() функция option() функция exit().

А теперь я хочу через метод класса передать все эти названия функций в объект,и чтобы они выполнять для нужного списка меню.Как реализовать не подскажете?Или в какую сторону двигаться?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.08.2013, 22:25     Как передать функции через метод класса
Посмотрите здесь:

Как передать метод класса в качестве параметра функции C++
Как обраиться к функции класса через другую функцию класса (друга)? C++
Передать метод класса как параметр C++
как передать значение функции класса в другую функцию C++
C++ Как передать в метод класса ссылку на экземпляр
C++ Как передать указатель на функцию через метод класса ?
Как передать нестатическое поле в статический метод класса? C++
C++ Как передать вектор в параметрах функции класса?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
10.08.2013, 10:31     Как передать функции через метод класса #2
Почитайте про указатели на функции.
Issues
429 / 364 / 37
Регистрация: 06.08.2012
Сообщений: 961
10.08.2013, 14:18     Как передать функции через метод класса #3
как то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
 
typedef void (*pFunction)();
 
inline void Start()  { std::cout << "Start() \n";  }
inline void Option() { std::cout << "Option() \n"; }
inline void Exit()   { std::cout << "Exit() \n";   }
 
void SomeFunc(pFunction*);
 
int main(int)
{
    pFunction pFun [3] = { Start, Option, Exit };
 
    SomeFunc(pFun);
 
    return 0;
}
 
void SomeFunc(pFunction* pF)
{
    pF[0](); // Start()
    pF[1](); // Option()
    pF[2](); // Exit()
}
или так :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <map>
#include <string>
#include <array>
 
inline void Start()  { std::cout << "Start run.  \n"; }
inline void Option() { std::cout << "Option run. \n"; }
inline void Exit()   { std::cout << "Exit run.   \n"; }
 
void SomeFunc(const std::array<std::string, 0x3>&, std::map<std::string, void (*)()>&);
 
int main(int)
{
    std::array<std::string, 0x3> aTitle = { "Start", "Option", "Exit" };
    std::map<std::string, void (*)()> pFun;
    
    pFun.insert(std::make_pair(aTitle[0], Start));
    pFun.insert(std::make_pair(aTitle[1], Option));
    pFun.insert(std::make_pair(aTitle[2], Exit));
 
    SomeFunc(aTitle, pFun);
 
    system("PAUSE");
    return 0;
}
 
void SomeFunc(const std::array<std::string, 0x3>& title, std::map<std::string, void (*)()>& pFun)
{
    std::cout << title[0] << " - "; pFun[title[0]]();
    std::cout << title[1] << " - "; pFun[title[1]]();
    std::cout << title[2] << " - "; pFun[title[2]]();
}

Не по теме:

P.S. вместо SomeFunc - то, что тебе нужно

Yandex
Объявления
10.08.2013, 14:18     Как передать функции через метод класса
Ответ Создать тему
Опции темы

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