Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: function pointer in template  (Прочитано 6093 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Mayor
Специалист

ru
Offline Offline

« : 25-07-2009 08:03 » 

function pointer in template

есть шаблон функции сравнения:

template<class a> int cmp(a* p1,a* p2) { .... }

есть шаблон  функции сотритровки:

template<class a> void sort(a* begin,a* end,  xxx) { .... }

как объявить третий аргумент ( ххх ) так, чтобы он принимал указатель на одну из функций типа cmp ?
Записан

1n c0de we trust
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 25-07-2009 09:10 » 

Ну классика жанра. STL.
Код:
 template<typename _RandomAccessIterator, typename _Compare>
    inline void
    sort(_RandomAccessIterator __first, _RandomAccessIterator __last,
_Compare __comp)
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Mayor
Специалист

ru
Offline Offline

« Ответ #2 : 25-07-2009 14:41 » 

Ну классика жанра. STL.
Код:
 template<typename _RandomAccessIterator, typename _Compare>
    inline void
    sort(_RandomAccessIterator __first, _RandomAccessIterator __last,
_Compare __comp)

те связка происходит не в загаловке, а в теле функции?
_RandomAccessIterator temp=__first+1;
__comp(__first,temp);

это сработает?

помоему, ты где то упустил связку итератора с типом функции, может быть нужно, что то типа:

template<class a,class b> void sort(a first,a last,b<a> cmp) { .... } // Не понял?
Записан

1n c0de we trust
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #3 : 25-07-2009 15:01 » 

Mayor, Я ничего не пропустил. Еше раз повторяю, это так сделано в STL. Береш у себя файл algorithm и смотриш в нем. Очень кстати рекомендую.
При привязке к функции не обязательно указывать, какие будут типы аргументов. компилятор сам определит, когда будет раскрывать все шаблоны.

Знаю, ты не читатель. Ты писатель. Но в любом случае рекомендую почитать по шаблону Андрей Александресску "Современное проектирование на С++". Эта книга как раз очень сильно раскрывает вопросы шаблонов в С++.
« Последнее редактирование: 25-07-2009 15:10 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #4 : 27-07-2009 04:05 » new

это сработает?

Харош тупить. Возьми и проверь.
Записан

Странно всё это....
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines