Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Андрей1010
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 10
#1

dynamic_cast - C++

31.01.2014, 13:58. Просмотров 777. Ответов 20
Метки нет (Все метки)

Подскажите пожалуйста, возникла проблема. Есть базовый клас CStep. И пока один наследник:
C++
1
class CStepMove : public CStep
Ести вектор указателей:
C++
1
  vector <CStep*> VChangeBack;
Проблема возникает в момент приведения указателей:
C++
1
2
3
4
    CStep* C;
    C = VChangeBack.back();
    CStepMove* A;
    A = dynamic_cast <CStepMove*> C;
Последняя строка выдаёт ошибки: E2276 (expected; и E2379 Statemedt missing;
Не могу понять в чём проблема, аналогичный код видел в других примерах, а написал сам - и не работает...
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2014, 13:58     dynamic_cast
Посмотрите здесь:

dynamic_cast - C++
Помогите разобраться с dynamic_cast, а точнее с вот этой записью void f() { A* pa = new A; B* pb = new B; void* pv =...

dynamic_cast - C++
#include &lt;iostream&gt; class B { public: virtual void foo(){std::cout&lt;&lt;&quot;B&quot;;} private: int a; }; class D : public B { ...

Dynamic_cast - C++
#include &lt;iostream&gt; #define STOP cin.get(); using std::cin; using std::cout; class A { public: // void foo()

dynamic_cast - C++
Уважаемые, подскажите теорию. Как устроен данный каст? Не нашел его определений. В студии он зашит в библиотеку, подсказок в хелпе про него...

dynamic_cast() шаблон - C++
Здорова! Пытаюсь свой шаблон функции создать dynamic_cast() это ptr_cast() но ничо не получается. Не могу никак сам шаблон написать ...

Dynamic_cast и полиморфизм - C++
Задача: В листинге 15.16 после каждого блока try находятся два блока catch, поэтому исключение nbad_index приводит к вызову метода...

Объясните dynamic_cast - C++
дали задание разобраться с dynamic_cast, что это такое и с чем его едят. Прочитал информацию про него, но в программе он не работает(или...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
Эксперт С++
7116 / 5293 / 273
Регистрация: 10.12.2010
Сообщений: 23,412
Записей в блоге: 17
07.02.2014, 16:25     dynamic_cast #16
Если вектор пуст ?

Условия типа if( a = b ) не гуд...
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
07.02.2014, 16:40     dynamic_cast #17
Цитата Сообщение от Avazart Посмотреть сообщение
Если вектор пуст ?
то UB
Цитата Сообщение от Avazart Посмотреть сообщение
Условия типа if( a = b ) не гуд...
в данном случае вполне имеет место быть. Т.к. присваивание со сравнением на nullptr. А внутри блока работаем с A. Правда определение тогда следовало бы тоже в if поместить.
Avazart
Эксперт С++
7116 / 5293 / 273
Регистрация: 10.12.2010
Сообщений: 23,412
Записей в блоге: 17
07.02.2014, 16:47     dynamic_cast #18
Цитата Сообщение от Tulosba Посмотреть сообщение
в данном случае вполне имеет место быть. Т.к. присваивание со сравнением на nullptr. А внутри блока работаем с A. Правда определение тогда следовало бы тоже в if поместить.
А как читается ?

C++
1
2
3
4
5
6
7
8
if( !VChangeBack.empty() )
{ 
   CStepMove* A = dynamic_cast <CStepMove*> (VChangeBack.back());
   if (A)
   {
      A-> ...
   }
}
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
07.02.2014, 17:48     dynamic_cast #19
Цитата Сообщение от Avazart Посмотреть сообщение
А как читается ?
Это же целая лишняя строчка кода.
Avazart
Эксперт С++
7116 / 5293 / 273
Регистрация: 10.12.2010
Сообщений: 23,412
Записей в блоге: 17
07.02.2014, 17:56     dynamic_cast #20
C++
1
CStepMove* A = dynamic_cast <CStepMove*> (VChangeBack.back()); if (A) { A-> ... }
Так лучше ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2014, 18:02     dynamic_cast
Еще ссылки по теме:

Работа с dynamic_cast - C++
Всем привет! Есть Абстрактный класс Transport. Есть три наследника: Plain, Train, Ship. Есть массив указателей на базовый класс который...

Использование dynamic_cast - C++
#include&lt;iostream&gt; #include&lt;locale.h&gt; using namespace std; class Base { public: virtual void f() {}; }; class Der :...

Dynamic_cast реализация - C++
Добрый вечер, есть застоявшаясь фраза: &quot;dynamic_cast&lt;Type*&gt;( pointer ) очень медленное, его лучше не использовать&quot; . Примерная...

Как работает dynamic_cast - C++
Почему все if-ы срабатывают? void print(Shape *shape) { if (dynamic_cast&lt;Point*&gt;(shape)) { cout &lt;&lt; &quot;Point\n&quot;; ...

Ошибка dynamic_cast: __non_rtti_object - C++
В программе создается базовый класс деревьев, от которого наследуется класс АВЛ-дерева. Не спрашивайте зачем так делать, задача такая....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
07.02.2014, 18:02     dynamic_cast #21
Цитата Сообщение от Avazart Посмотреть сообщение
Так лучше ?
То что надо
Yandex
Объявления
07.02.2014, 18:02     dynamic_cast
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru