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

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

Войти
Регистрация
Восстановить пароль
 
Bretbas
Каждому свое
363 / 133 / 34
Регистрация: 05.08.2013
Сообщений: 1,414
Завершенные тесты: 1
#1

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

09.08.2013, 22:25. Просмотров 447. Ответов 2
Метки нет (Все метки)

Добрый вечер всем!
Столкнулся с проблемкой

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

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

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

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

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

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

Как передать указатель на функцию через метод класса ? - C++
typedef void (*FuncCallback)(float* flValue); Пробовал по всякому и ни как: Class.CallFunc // error C3867: CClass::CallFunc :...

Как передать метод класса в качестве параметра функции - C++
Это типа "бот", он работает ("шагает" по заданному полю) #include "stdafx.h" #include <iostream> #include <time.h> #include...

Как передать в метод класса Menu указатель на метод дочернего класса? - C++
Как передать в метод базового класса указатель на метод дочернего: class Menu() { protected: setCallback(*********); //...

Передать метод класса как параметр - C++
Есть класс A, у него есть метод B, как метод B подсунуть в конструктор std::thread? Что-то типа такого class A { void B{ ... } ...

Как корректно передать в метод шаблонного класса объект шаблонного класса в качестве параметра? - C++
header.h template <class T> class MyVector { public: void swap(MyVector<T>Vector); } template <class T> void...

Как передать в метод класса ссылку на экземпляр - C++
Есть класс class Class{ ... } Как передать в метод экземплер класса из которого вызывается этот метод? Пробывал так: class Class{ ...

2
silent_1991
Эксперт С++
4997 / 3055 / 149
Регистрация: 11.11.2009
Сообщений: 7,040
Завершенные тесты: 1
10.08.2013, 10:31 #2
Почитайте про указатели на функции.
0
Issues
430 / 365 / 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 - то, что тебе нужно

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.08.2013, 14:18
Привет! Вот еще темы с ответами:

Как передать нестатическое поле в статический метод класса? - C++
есть статическая фукция static LRESULT CALLBACK WndProc ( HWND,UINT,WPARAM,LPARAM); в ней нужно использоавть поля класса, вопрос -...

Как передать вектор в параметрах функции класса? - C++
есть функция bool ReadDir(const std::wstring &amp;, const std::wstring&amp; , int, bool,bool , std::vector&lt;std::wstring&gt;&amp;, bool&amp; ); кода...

Как обраиться к функции класса через другую функцию класса (друга)? - C++
Пример кода: #include &lt;iostream&gt; using namespace std; class Sasha; class Petya { public: friend class Sasha; ...

Как передать значение функции класса в другую функцию? - C++
имеется класс class Test { public: int getB() { return B; } void setB(int b) { B = b; } private: ...


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

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

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