![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
GorbunovDiman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 3.3.2008 Репутация: нет Всего: нет |
Здраствуйте!
Можно ли в map записать указатель на функцию чтобы потом вызвать её по ключу?(Для каждого ключа своя функция) Почему нужно именно в контейнер потому , что функции должны удалятся и добовляться динамически и в начале работы программы нельзя пердсказать что там и сколько будет. Если можно то ![]() |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
в значении, укажи тип - указатель на функцию.
|
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
но сигнатура у всех одинаковая должна быть.. |
|||
|
||||
GorbunovDiman |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 3.3.2008 Репутация: нет Всего: нет |
да это так.
Этот код скомпилировался.что касается void(*)() , то такая комбинация скобок была получена экспериментально(другие варианты выводили ошибку на стадии insert). Вопрос: 1)как вызвать функцию по ключу на выполнение? 2)я так понимаю в контейнер записывается экземпляр функции, а не указатель! как записать указатель? ![]() ![]() ![]() |
||||||
|
|||||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
http://liveworkspace.org/code/888311a365bc...3f7903dc534ca9b |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
указатель.. для наглядности можете писать так :
вот пример: http://liveworkspace.org/code/5459aa62e56d...340b6740c26eb96 Добавлено через 1 минуту и 34 секунды теперь даже два примера - выбирайте на вкус.. Добавлено через 2 минуты и 46 секунд вариант с итератором (у boostcoder) эффективнее, но для начинающих трудноват для понимания.. |
|||
|
||||
GorbunovDiman |
|
||||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 3.3.2008 Репутация: нет Всего: нет |
Всем огромное спасибо за примеры!
А можно объяснить именно эту строку?
А можно ли вызвать на выполнение только одну функцию и как это грамотно сделать? Вариант с итераторами очень нагляден,НО мне нужно вызывать не все ,а только одну! Правильным ли будет код
Добавлено через 2 минуты и 55 секунд
Вопрос отпал сам собой!Работает. |
||||||||
|
|||||||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |