| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > как сделать шаблон типа указателя на функцию? |
| Автор: victor79 25.7.2011, 21:06 | ||
т.е. что бы было что-то подобное:
Добавлено через 12 минут и 48 секунд у меня объявлен шаблон с несколькими типами, и на эти несколько типов сделаны несколько переменных в нем, и на эти несколько переменных еще нужно привязать функции обработчики, которые устанавливаются в отдельные переменные, и если они не установлены то должны вызваться дефаултные обработчики. И между собой эти обработчики подобны по синтаксису - всякое копирование. И что бы не плодить множество определений обработчиков - и нужен такой шаблон. |
| Автор: mes 25.7.2011, 22:51 |
| обернуть typedef в структуру.. |
| Автор: victor79 26.7.2011, 03:33 | ||||
сначала не подумал, что можно обернуть ТАКИМ образом. Придется при установке и вызове добираться через точку, но это уже гораздо проще.
Добавлено @ 03:35 возможно так даже лучше будет объединять в блоки функции. типа:
|
| Автор: victor79 26.7.2011, 05:32 | ||
или еще вариант
|
| Автор: afiskon 26.7.2011, 06:38 |
| По-нормальному это делается через функтор, то есть объект с переопределенным operator(). Такие объекты помимо прочего можно использовать вместе с STL. Пример есть на вики. |
| Автор: EnergoHokum 26.7.2011, 13:27 |
| http://www.cplusplus.com/reference/std/functional/pointer_to_unary_function/. |
| Автор: victor79 26.7.2011, 15:15 | ||
| саму функцию я как раз то и не хочу заворачивать в структуру. Это лишние конструкции, которые уже не запаковать в библиотечные, и располагать их придется в основной структуре программы. Мне просто нужен тип типа ссылки на функцию и шаблонизированный. Это вроде как решил. Вот если бы еще можно было делать статическими операторы определенные в структурах... Типа:
или другими способами определить диадические/монадические операторы с НАЗВАНИЕМ. Но это уже другой вопрос. (на момент написания поста линку про функцию одного аргумента еще не увидел, нужно подумать про это свойство) |
| Автор: borisbn 26.7.2011, 15:20 | ||
жесть. а чем operator() не устраивает ?
только лишними скобками ? -------------------- уупс. afiskon уже говорил это... просмотрел |
| Автор: victor79 26.7.2011, 15:23 | ||||
да в этом примере именно лишними скобками и не устраивает. Если выстраивать последовательности из 5-10 подряд операторов, то в скобках слишком путаешься. |
| Автор: bsa 26.7.2011, 15:36 | ||||
victor79, вообще-то, так никто не делает. Обычно, делают так:
|
| Автор: victor79 27.7.2011, 02:13 |
размышляя над примером оператора () пришел к выводу В общем мой вариант :: мне нравиться больше, по крайней мере пока не начну юзать STL. |
| Автор: EnergoHokum 27.7.2011, 06:51 | ||
С этим медлить не стоит. |
| Автор: bsa 27.7.2011, 15:04 | ||
Это почему еще? Для простых функторов вполне достаточно стандартного конструктора. А сложные иначе не сделаешь. |