![]() |
|
Модераторы: bsa |
![]()
|
|
| Тигер |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 4.4.2010 Репутация: нет Всего: нет |
надоело писать често такое
нельзя ли как нибудь динамически вызвать нужный метод? ещё вопрос, нельзя ли как-нибудь работать со свичём без enum? напрямую со значениями |
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
-------------------- |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
Тигер
map + указатель на функцию. |
|||
|
||||
| toxx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 4 Всего: 13 |
А может быть имеется в виду чтото такое?
Это сообщение отредактировал(а) toxx - 19.4.2010, 20:17 |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
||||
|
||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 3 Всего: 23 |
Если константы идут подряд можно вместо map'а использовать обычный массив.
|
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
можно даже если не идут, тут вопрос что важнее. Если к примеру ключ умещается в short то вполне реально создать массив размером в 65536 элементов, но взамен получить константную сложность поиска. Я так делал в одной низкоуровневой библиотеке, прирост был фантастический на аппарате с процессором 70mhz. |
|||
|
||||
| Тигер |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 4.4.2010 Репутация: нет Всего: нет |
azesmcar
дык эмм. эту карту сначало заполнить надо. вообщем, как реализуются паттерны фабрика или serviceLocator в с++ Это сообщение отредактировал(а) Тигер - 19.4.2010, 22:10 |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
http://forum.vingrad.ru/forum/topic-266893...tml#st_0_view_0 |
|||
|
||||
| Тигер |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 4.4.2010 Репутация: нет Всего: нет |
ну тоже через map
а нет какой-нибудь функции каторая проверит существует ли метод в классе? Добавлено через 3 минуты и 2 секунды гуглил гуглил. из подтекста виднелось что это можно сделать при помощи dll? заодно и динамическую подгрузку модулей? |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
||||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
||||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
пример "саморегистрирующийся" фабрики есть у Александреску в "Современном проектировании"
выглядит это примерно так
регистрацию метода в карте можно завернуть в макрос. более полный пример http://forum.vingrad.ru/forum/topic-273518...atch/index.html (пункт 2) Добавлено через 1 минуту и 19 секунд также, методы можно сделать виртуальными, и использовать какой-нибудь хак с таблицей виртуальных методов |
|||
|
||||
| Owen |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 5.7.2006 Где: Русь Репутация: нет Всего: нет |
А чем не подходит передавать указатель на функцию/метод?
|
|||
|
||||
| djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 4 Всего: 39 |
Из текущей программы или динамически слинкованной библиотеки можно получить (и проверить на существование) функцию по string-имени. В POSIX.1-2001 это dlopen, dlsym и т.д., в винде какие-то winAPI-шные аналоги, кроме того на гуглокоде есть реализация dl-интерфейса под винду. Вытаскиваемая функция должна быть экспортируемой extern "C", с++-ные методы так не вытащить.
-------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |