Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
21 / 15 / 6
Регистрация: 19.10.2015
Сообщений: 61
1

Проверка наследования класов

28.11.2015, 00:19. Просмотров 1453. Ответов 5
Метки нет (Все метки)


У меня есть один базовой клас "Creature", от него наследуються два класа "Animal" и "Plant". От класа "Animal" наследуються еще 2 класа "Predator" и "Herbivore". От класа "Predator" наследуеться клас "Wolf". А од класа "Plant" наследуеться "Chamomile"
Ветки:
Creature -> Animal - > Predator -> Wolf
Creature -> Plant -> Chamomile

Вопрос: Как проверить что указатель сечас хранит адрес пам'яти где находиться клас "Animal" или его подкласи?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.11.2015, 00:19
Ответы с готовыми решениями:

Чем отличаются структуры для наследования интерфейса от структур для наследования реализаций?
Дорогие программисты, во первых, хочу поздравить вас с Наступающим новым Годом! Я к вам обращаюсь с...

наследование класов
Напишите пожалуйста ету програму, а то я никак немогу разобратся с наследованием. Создать класс...

Наследование класов
Классы для меня в целом очень сложно даются, мне очень нужна данная прога так как все последующие...

Статические компоненты класов
Создать класс Beta таким образом, чтобы при уничтожении последнего объекта на экран выдавалось...

__________________
Помогаю в написании студенческих работ здесь.
Записывайтесь на профессиональные курсы C++ разработчиков
5
Эксперт PHP
2980 / 2501 / 1179
Регистрация: 14.05.2014
Сообщений: 7,065
Записей в блоге: 1
28.11.2015, 00:20 2
AntonIv, про dynamic_cast слышали?
0
21 / 15 / 6
Регистрация: 19.10.2015
Сообщений: 61
28.11.2015, 00:22  [ТС] 3
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
AntonIv, про dynamic_cast слышали?
Да. Но использовать никогда не приходилось..
0
Эксперт PHP
2980 / 2501 / 1179
Регистрация: 14.05.2014
Сообщений: 7,065
Записей в блоге: 1
28.11.2015, 00:25 4
Лучший ответ Сообщение было отмечено AntonIv как решение

Решение

AntonIv, а вы попробуйте, может быть понравится
C++
1
2
3
4
if (dynamic_cast<Animal *>(/*имя указателя на Creature*/) != nullptr /*NULL, 0*/)
{
   // что-то делаем
}
1
21 / 15 / 6
Регистрация: 19.10.2015
Сообщений: 61
28.11.2015, 00:38  [ТС] 5
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
AntonIv, а вы попробуйте, может быть понравится
Спасибо, очень понравилось

Kerry_Jr, Не подскажите где можно более детально прочитать про все типи преобразования
static_cast, dynamic_cast, reinterpret_cast и другие...если есть?
0
Эксперт PHP
2980 / 2501 / 1179
Регистрация: 14.05.2014
Сообщений: 7,065
Записей в блоге: 1
28.11.2015, 01:05 6
AntonIv, 1. type2 static_cast<type2>(type1) - приводит переменную типа type1 к типу type2.
Если приведение невозможно, возникает ошибка компиляции.

2.1. type2& dynamic_cast<type2 &>(type1&) - приведение ссылки одного типа к ссылке другого типа.
Если приведение невозможно, то бросается исключение std::bad_cast - ошибка выполнения

2.2. type2* dynamic_cast<type2 *>(type1 *) - приведение указателя одного типа к указателю другого типа.
При невозможности преобразования возвращается 0 или нулевой указатель - ошибки не возникает.

3. type2 reinterpret_cast<type2>(type1) - приведение типов без проверки. Применяется в основном для указателей и желательно в том случае, когда есть полная уверенность в правильности данного приведения.

4. type2 const_cast<type2>(const type1) - снимает константность при преобразовании типов. Невозможность преобразования приводит к ошибке компиляции.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.11.2015, 01:05

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

проблема с зависимостю класов
такая проблема: есть класы A и B A { B b = new B(); } B - поле класа A как сделать...

Перегрузка операторов разных класов
здравствуйте уважаемые форумчане начал программировать класс полиномов и начал я перегружать...

Преобразование типов и методы класов
Есть задача: 1)Создать класс Triangle, разработав следующие элементы класса: поля: int a, b, c; ...

Перегрузка опереторов для пользовательских класов
#include &lt;iostream&gt; #include &lt;sstream&gt; #include &lt;string&gt; #include &lt;cmath&gt; #include &lt;windows.h&gt;...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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