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

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
oxotnik
1589 / 1066 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
#1

dynamic_cast в иерархии - C++

29.01.2009, 14:58. Просмотров 1339. Ответов 4
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class A
{
....
};
 
class B : public A
{
public:
  A a1;
  A a2;
void SomeFunc(A *a = this);
};
 
void B::SomeFunc(A *a)
{
   if (dynamic_cast<B*>(a))
      DoSomething_1();
   else 
      DoSomething_2();
}
сработает ли условие dynamic_cast<B*>(a) если а не будет указателем на класс B ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2009, 14:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос dynamic_cast в иерархии (C++):

Преобразование классов одной иерархии - C++
Всем привет. Допустим, есть следующая иерархия классов: class B { T data; }; class D1 : public B { // some D1 spec...

С++ является контекстно независимым языком по иерархии Хомского? - C++
С++ является контекстно независимым языком? Можете привести пример контекстно-зависимого языка?

Примеры о dynamic_cast<> и static_cast <> - C++ Builder
Привет. Можете поширее обяснить что такое dynamic_cast&lt;&gt; и static_cast &lt;&gt; и показать живой пример для билдера... Пожалуйста. ...

Static , dynamic_cast, - ( Sender ) не работает сортировка корректно со вторым стринггридом! - C++ Builder
Всем привет! :senor: сразу вопрос. есть PageControl с двумя вкладками. на каждой есть стрингрид. для сортировки по колонкам, в...

dynamic_cast - Visual C++
часть кода такая list&lt;good *&gt;::const_iterator it = p.exp.begin(), end = p.exp.end(); for (; it != end; ++it) { if...

Разработка иерархии классов - Visual C++
Розробка ієрархії класів «Торгівельна мережа комп’ютерної техніки». Розробити ієрархічну систему класів, що визначає торговельну мережу...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,368
29.01.2009, 17:56 #2
Сработает, если a реально будет указателем на A.

Добавлено через 14 минут 38 секунд
Нет, вру. Не сработает. Будет NULL.
oxotnik
1589 / 1066 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
29.01.2009, 18:00  [ТС] #3
меня интересует следующий момент:
Код
A a_1;
B b_1;
B b_2;
b_1.SomeFunc(a_1); // какое здесь выполнится из DoSomething_...() ?
b_1.SomeFunc(b_2); // какое здесь выполнится из DoSomething_...() ?
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,368
29.01.2009, 18:07 #4
Ну, этот код даже не скомпилируется. Ты, вероятно, имел в виду следующее:
Код
A* a_1 = new A;
B* b_1 = new B;
B* b_2 = new B;
b_1->SomeFunc(a_1); // выполнится DoSomething_2()
b_1->SomeFunc(b_2); // выполнится DoSomething_1()
oxotnik
1589 / 1066 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
29.01.2009, 18:20  [ТС] #5
сорри
вот так хотел записать:
C++
1
2
b_1->SomeFunc(&a_1); // выполнится DoSomething_2()
b_1->SomeFunc(&b_2); // выполнится DoSomething_1()
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2009, 18:20
Привет! Вот еще темы с ответами:

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

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, а точнее с вот этой записью void f() { A* pa = new A; B* pb = new B; void* pv =...

dynamic_cast - C++
Подскажите пожалуйста, возникла проблема. Есть базовый клас CStep. И пока один наследник: class CStepMove : public CStep Ести вектор...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.01.2009, 18:20
Ответ Создать тему
Опции темы

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