3 / 3 / 8
Регистрация: 25.11.2015
Сообщений: 127
|
|
1 | |
Написать шаблон ptr_cast, который работает аналогично dynamic_cast (задача из книжки Страуструпа)26.12.2015, 19:33. Показов 1376. Ответов 14
Метки нет (Все метки)
Кто может написать шаблон ptr_cast, который работает аналогично dynamic_cast? Задача из Страуструпа, не могу это реализовать?
0
|
26.12.2015, 19:33 | |
Ответы с готовыми решениями:
14
dynamic_cast() шаблон Создать шаблон, который работает подобно алгоритму find Как работает dynamic_cast Задача из книги Страуструпа (4.6.3) |
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
||||||
26.12.2015, 20:32 | 2 | |||||
Сообщение было отмечено DavidTs как решение
Решение
0
|
3 / 3 / 8
Регистрация: 25.11.2015
Сообщений: 127
|
|
26.12.2015, 20:36 [ТС] | 3 |
rikimaru2013, Спасибо.
0
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
26.12.2015, 20:39 | 4 |
Да куда спасибо - я там нагавнокодил дико - сейчас кучу текста меняю на using и убираю static_assert на SFINAE
0
|
DrOffset
|
26.12.2015, 20:43
#5
|
Не по теме: rikimaru2013, а если еще учесть, что Страуструп совсем не это просил сделать... то вообще :)
0
|
rikimaru2013
|
26.12.2015, 20:46
#6
|
Не по теме: DrOffset, если я всё подсумировать, то мне лучше уйти в Web-разработку. Да? :cry:
0
|
18840 / 9839 / 2408
Регистрация: 30.01.2014
Сообщений: 17,280
|
||||||
26.12.2015, 20:56 | 7 | |||||
Сообщение было отмечено rikimaru2013 как решение
Решение
Да ты не при чем. Просто ТС не полностью задание скинул.
Странно было бы думать, что Страуструп ждет от людей кода, подобного приведенному выше. Задание предполагает всего-навсего вот такую простую реализацию:
А далее там идет вот такое задание:
2
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
||||||
26.12.2015, 20:57 | 8 | |||||
Вот
Кликните здесь для просмотра всего текста
Почему у меня строка с ptr_cast<C>(ptr) не подчёркуется вовремя сборки intellisense visual studio 2015 ?
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
26.12.2015, 22:40 | 9 | |||||
сама идея пофиксить максимум ошибок в компалтайме, безусловно хороша.
однако, ваш код не работает. он не делает самого главного - не умеет фиксить ошибки времени выполнения. http://rextester.com/YVK46581
1
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
||||||
26.12.2015, 22:51 | 10 | |||||
hoggy, сравнил ваш и мой код через diff тулзы:
отрефакторили чучуть, добавили другой класс и assert - следовательно код правильный и на этапе компиляции если используют неправильно будет ошибка. Другое поведение: эта попытка имитации dynamic_cast приведение или Nullptr - так где я ошибся. Если бы как в dynamic_cast не полиморфный тип подчёркнулся - кажись я добился результата на все 100%, но не подчёркует интелесенс (потому, что много вложеностей), а так же есть compile-error. Добавлено через 2 минуты
- так как его всегда юзают не верно - низлежащие типы зависят от вверхлежащих - нагрузка использование RTTI в ран-тайме
0
|
18840 / 9839 / 2408
Регистрация: 30.01.2014
Сообщений: 17,280
|
||||||
26.12.2015, 22:55 | 11 | |||||
проверь вот на таком варианте:
1
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
26.12.2015, 23:12 | 12 | |||||
да, я просто хотел вам показать,
что для sfinae не нужно создавать классы Yes/No. ссылки на массивы срабатывают абсолютно точно так же, а буковок писать приходится всего две строчки. ага, и вот тест на каст с этим классом у вас проваливается. ну смотрите:
1
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
26.12.2015, 23:28 | 13 |
Ну если имитировать работу RTTI определения типа, то согласно имплимитациям о которых я читал в статьях и книгах это:
- помещение в VTABLE метода getMyTypeiD() (для работы typeid() говорят так и делается) Там же прочитал, что если если без RTTI, то и нужнос сравнить указали одного ли типа: - сравнение первых 4 байт( (size_t*)class_ptr == (size_t*)class_ptr2)
0
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|
26.12.2015, 23:46 | 14 |
rikimaru2013, еще годный материал:
http://llvm.org/docs/HowToSetUpLLVMStyleRTTI.html https://github.com/earl/llvm-m... /Casting.h
1
|
3 / 3 / 8
Регистрация: 25.11.2015
Сообщений: 127
|
|
27.12.2015, 11:14 [ТС] | 15 |
0
|
27.12.2015, 11:14 | |
27.12.2015, 11:14 | |
Помогаю со студенческими работами здесь
15
Задача из книги Страуструпа Задача из книги Страуструпа Задача из книги Страуструпа Задача из книжки на while и if.else Задача из Страуструпа про исключения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |