0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 10
|
||||||||||||||||
1 | ||||||||||||||||
dynamic_cast31.01.2014, 13:58. Показов 1596. Ответов 20
Метки нет (Все метки)
Подскажите пожалуйста, возникла проблема. Есть базовый клас CStep. И пока один наследник:
Не могу понять в чём проблема, аналогичный код видел в других примерах, а написал сам - и не работает...
0
|
31.01.2014, 13:58 | |
Ответы с готовыми решениями:
20
dynamic_cast dynamic_cast Dynamic_cast dynamic_cast |
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 10
|
|
31.01.2014, 14:12 [ТС] | 5 |
Спасибо.
Добавлено через 2 минуты Пишет что не может конвертировать CStep* в CStepMove*. Дело и впрямь было в скобках)))
0
|
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
|
||||||
31.01.2014, 14:30 | 7 | |||||
1
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
31.01.2014, 14:34 | 8 |
0
|
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
|
|
31.01.2014, 14:38 | 9 |
0
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||||||
31.01.2014, 15:08 | 10 | |||||
egor2116, и мало того, что они так называются, поведения, характерного для dynamic_cast, добиться с помощью C-style каста, нельзя.
0
|
31.01.2014, 20:34 | 13 |
Tulosba, да, я не сразу допёр, что тут кастуется не производный класс к базовому, а наоборот! Тогда вообще непонятна цель этого шаманства.
Обычно мы можем создать контейнер полный указателей base*, а затем пихать в него указатели на различные производные классы. Это позволит нам вызывать по этим указателям виртуальные функции, не задумываясь о конкретном типе объектов. Но зачем может понадобиться кастовать их назад в конкретный производный тип, если мы только что создали абстрактный интерфейс как раз с противоположной целью!?
0
|
31.01.2014, 21:21 | 14 |
Нужно когда у производного класса есть специфические методы которых нет у базового.
И собственно да предпочтительнее включить этот метод(с пустой реализацией) в базовый класс, нежели кастовать (но думаю все же это не всегда можно сделать) Кроме того Майерс советует как вариант распихать объекты по разным контейнерам. Добавлено через 9 минут .....
0
|
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 10
|
||||||
07.02.2014, 15:27 [ТС] | 15 | |||||
Понимаете, решение задачи было поставлено так, что если последний объект вектора принадлежит к конкретному классу, то нужно видоизменить этот объект (при определённых условиях), в противном же случае необходимо создать новый объект и добавить указатель на него в вектор.
Проблема, кстати, решена, всё работает. Спасибо за помощь. Вот как заработало.
0
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
07.02.2014, 16:40 | 17 |
то UB
в данном случае вполне имеет место быть. Т.к. присваивание со сравнением на nullptr. А внутри блока работаем с A. Правда определение тогда следовало бы тоже в if поместить.
0
|
07.02.2014, 17:56 | 20 | |||||
0
|
07.02.2014, 17:56 | |
07.02.2014, 17:56 | |
Помогаю со студенческими работами здесь
20
dynamic_cast() шаблон Работа с dynamic_cast Использование dynamic_cast Dynamic_cast реализация Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |