Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
06.06.2018, 17:59
|
|||
|---|---|---|---|
|
|||
Ограничение на параметры шаблонов |
|||
|
#18+
Вот хочу я, например, написать какую-то такую шаблонную функцию: Код: plaintext 1. 2. 3. 4. 5. 6. Функция принимает ноду дерева и должна создать и добавить к ней нового ребёнка. При этом, существует несколько типов нод, и какую именно нужно создать определяет вызывающий код и должен передать эту инфу в функцию. Для этого использую шаблон. Собственно вопрос, можно ли как-то задать ограничение на родительский класс параметра шаблона? Например, в джаве можно было бы написать что-то вроде <Node extends TreeNode> (правда, в джаве создавать ноду пришлось бы через одно место рефлексию, но это уже совсем другая история, лол), а в С++, я так понимаю, так нельзя и все косяки в содержимом функции обнаружатся, только когда кто-то её попытается вызвать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.06.2018, 18:03
|
|||
|---|---|---|---|
Ограничение на параметры шаблонов |
|||
|
#18+
Ржавый гвоздь, std::enable_if вместе с std::is_base_of ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.06.2018, 18:09
|
|||
|---|---|---|---|
Ограничение на параметры шаблонов |
|||
|
#18+
Должно быть как-то так Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.06.2018, 18:11
|
|||
|---|---|---|---|
|
|||
Ограничение на параметры шаблонов |
|||
|
#18+
Ржавый гвоздьможно ли как-то задать ограничение на родительский класс параметра шаблона? Можно выкинуть напрочь шаблон и... всё, ограничение введётся автоматически при задании в качестве параметра этого самого родительского класса. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.06.2018, 18:13
|
|||
|---|---|---|---|
Ограничение на параметры шаблонов |
|||
|
#18+
Dimitry SibiryakovМожно выкинуть напрочь шаблон и... всё, ограничение введётся автоматически при задании в качестве параметра этого самого родительского класса. Как я понимаю, у него не фигурирует родительский класс в аргументах функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.06.2018, 18:15
|
|||
|---|---|---|---|
|
|||
Ограничение на параметры шаблонов |
|||
|
#18+
NekZу него не фигурирует родительский класс в аргументах функции. А зря. Правильное наследование и полиморфизм - гораздо удобнее шаблонизации. По крайней мере - гораздо читабельнее. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.06.2018, 18:18
|
|||
|---|---|---|---|
Ограничение на параметры шаблонов |
|||
|
#18+
Dimitry SibiryakovА зря. Правильное наследование и полиморфизм - гораздо удобнее шаблонизации. По крайней мере - гораздо читабельнее. С этим нельзя спорить. Но порой возникают такие ситуации, когда без таких шаблонных непотребств не обойтись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.06.2018, 18:41
|
|||
|---|---|---|---|
|
|||
Ограничение на параметры шаблонов |
|||
|
#18+
NekZКак я понимаю, у него не фигурирует родительский класс в аргументах функции. Ага, именно так. NekZДолжно быть как-то так Спасибо, то что надо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.06.2018, 19:40
|
|||
|---|---|---|---|
Ограничение на параметры шаблонов |
|||
|
#18+
Ржавый гвоздьNekZКак я понимаю, у него не фигурирует родительский класс в аргументах функции. Ага, именно так. NekZДолжно быть как-то так Спасибо, то что надо! Тебе придётся явно инстанциировать функцию с указанным классом Node. addNode<NodeType1>(currentNode, line); addNode<NodeType2>(currentNode, line); и так далее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=57&mobile=1&tid=2017839]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
63ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
| others: | 284ms |
| total: | 449ms |

| 0 / 0 |
