|
0 / 0 / 0
Регистрация: 16.03.2017
Сообщений: 51
|
||||||
Шаблоны типа template<class T*>21.06.2017, 18:15. Показов 4925. Ответов 31
Здравствуйте, объясните пожалуйста, что означает сия запись: template<class T*>.
И означает ли она, что я далее смогу использовать только указатель на объект, а не сам объект? Т.е. пусть, например, у меня есть класс: Кликните здесь для просмотра всего текста
0
|
||||||
| 21.06.2017, 18:15 | |
|
Ответы с готовыми решениями:
31
подскажите template<class> (Шаблоны и указатели) Friend template class with template class argument
|
|
What a waste!
1612 / 1304 / 180
Регистрация: 21.04.2012
Сообщений: 2,735
|
|||||||
| 21.06.2017, 20:50 | |||||||
0
|
|||||||
|
0 / 0 / 0
Регистрация: 16.03.2017
Сообщений: 51
|
|||||||||||||
| 21.06.2017, 21:38 [ТС] | |||||||||||||
|
Добавлено через 3 минуты Вот есть такая штука
0
|
|||||||||||||
|
What a waste!
1612 / 1304 / 180
Регистрация: 21.04.2012
Сообщений: 2,735
|
|
| 21.06.2017, 21:50 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 16.03.2017
Сообщений: 51
|
||
| 21.06.2017, 21:57 [ТС] | ||
|
у нас же не будет единой функции для копирования дерева, т.к мы не знаем, дан ли нам указатель на объект или сам объект. Или я в чём-то Оочень сильно заблуждаюсь?
0
|
||
|
What a waste!
1612 / 1304 / 180
Регистрация: 21.04.2012
Сообщений: 2,735
|
||
| 21.06.2017, 22:11 | ||
|
Иначе вам придется в шаблоне класса node учитывать специальные случаи для указателей, возможно даже специальные случаи для указателей на определённые типы и т.п.
1
|
||
|
0 / 0 / 0
Регистрация: 16.03.2017
Сообщений: 51
|
||
| 21.06.2017, 22:32 [ТС] | ||
|
Не лучше ли попытаться создать специализацию класса node(если это возможно), а лучше функций копирования дерева? А причин создания специальных случаев для указателей я не вижу - указатель и есть указатель, функция копирования дерева для него просто будет разыменовывать указатель и копировать объект, а потом возвращать указатель на новый объект.
0
|
||
|
What a waste!
1612 / 1304 / 180
Регистрация: 21.04.2012
Сообщений: 2,735
|
|||||||
| 21.06.2017, 22:50 | |||||||
|
Для примера, строки можно хранить "a-la C", т.е. под строку выделяется блок памяти, используется, потом удаляется:
С другой стороны, можно использовать класс std::string, который по сути то же самое (так же выделяется/освобождается динамическая память, например), но все эти детали скрыты внутри класса и объекты std::string можно использовать как "обычные" типы (int, например). Можно использовать оператор = для присвоения одной строки другой и не заботиться о таких деталях как как конкретно происходит операция присвоения - просто пишем string1 = string2, и в string1 будет копия string2.
0
|
|||||||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|
| 21.06.2017, 23:01 | |
|
Twolka, для начала напишите дерево, в котором в качестве данных узла будет например поле int (всего одно). Оттестируйтесь на нём, проверьте, работоспособно ли оно. А далее делаете объявление шаблона класса (template <class T>) и превращаете поле типа int в поле типа T . И всё. Далее компилятор будет автоматически генерировать вам дерево под любой нужный вам тип или структуру с данными. А алгоритмы дерева останутся такими же.
1
|
|
|
0 / 0 / 0
Регистрация: 16.03.2017
Сообщений: 51
|
|||
| 21.06.2017, 23:12 [ТС] | |||
|
Ваш пример, конечно же, хорош, но как он связан с ситуацией, когда нужно иметь 2 разных алгоритма копирования - для указателей и для объектов? Здесь должен не класс T уметь по-особому копироваться(хотя если в нём есть указатель, он должен уметь), а именно должно быть 2 алгоритма: для копирования по указателю, и без него.
Мне кажется вот что здесь подойдёт: (когда смотрел на эти строки днём - всё совсем по другому понимал) Добавлено через 1 минуту Кстати, я написал для int(почти полностью), но вот шаблоны меня вгоняют в ступор из-за таких различий
0
|
|||
|
What a waste!
1612 / 1304 / 180
Регистрация: 21.04.2012
Сообщений: 2,735
|
||
| 21.06.2017, 23:17 | ||
![]() Иначе для каждого типа указателя надо будет писать свой алгоритм, насколько я понимаю.
0
|
||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||
| 21.06.2017, 23:22 | ||
. Вот только особого толку от такого подхода (с от самого дерева местом хранения данных) будет мало, если размер элементов массива мал.
1
|
||
|
0 / 0 / 0
Регистрация: 16.03.2017
Сообщений: 51
|
||||||||||||||
| 22.06.2017, 16:52 [ТС] | ||||||||||||||
![]() Давайте попробую в коде показать, что я предлагаю: (извиняюсь за ошибки, со специализациями не был знаком, думаю вы поймёте)
Добавлено через 2 минуты Добавлено через 2 минуты Ну серьёзно.. если мы останемся с одним алгоритмом, то указатели и сами будут восприниматься как объекты, которые мы храним Добавлено через 23 минуты Так. Код выше не заработает никогда - только что прочитал, что специализация функций не допустима.Но зато аналогичный (по моему мнению) код закомпилился и работает так, как нужно.
Ладно, насчёт "оставить всё на плечах пользователя" вы, наверное, правы. Мне сегодня объяснили, что дерево не для хранения лучше использовать .
0
|
||||||||||||||
| 22.06.2017, 16:52 | |
|
Ошибки: 1) use of class template requires template argument list 2) 'T' : undeclared identifier 'MyQueue' : use of class template requires template argument list
template <class T> Template class Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Контроль уникальности строк в табличной части документа
Maks 18.06.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ПланированиеСпецтехники" с табличной частью "НаличиеОборудования", разработанного в КА2.
Задача: контроль уникальности строк в. . .
|
Клиент
Uhbif79 18.06.2026
Здесь простой клиент для работы с сервером.
|
Сервер
Uhbif79 18.06.2026
Выкладываю простейший сервер.
|
Дефенестрация
kumehtar 18.06.2026
Узнал интересное слово. Дефенестрация. Это когда ты выбрасываешь кого-либо или что-либо из окна. Возьму на вооружение)))
|
|
Дихотомия добра и зла
kumehtar 18.06.2026
Как Дзен-буддисты говорят о добре и зле: не нужно воевать против зла, нужно воевать против невежества. Тогда добро станет ествественным, и поэтому вечным. Но дело в том, что невежество всё время. . .
|
Своя Интернет-Компания
iceja 18.06.2026
Я программист с экономическим образованием, пишу свой проект, это SaaS для бизнесов. Мне нужен co-founder с высшим экономическим образованием, и/ или инвестор. Сейчас проект в интенсивной разработке,. . .
|
24 Мат модель здравосохранения: функциональные требования к строительству пищеблока
anaschu 18.06.2026
СРесурсами1: финансовый SD-контур, калькулятор функциональных требований пищеблока
Сегодня разделили затраты в агенте Экономика по образцу модели НАСОСЫ, добавили расчёт ROI и построили первый. . .
|
23. что сделано за последнее время.
anaschu 17.06.2026
• Эталон: Клиника НИИ питания РАМН, Москва — централизованный пищеблок, 225 коек, 180 пациентов
• Git: репозиторий med2, ветка абсентеизм. Рабочий файл: СРесурсами1_v4. alp
• Смежный проект:. . .
|