Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
4 / 4 / 0
Регистрация: 13.07.2009
Сообщений: 83
1

Приведение типов

26.11.2010, 18:03. Показов 911. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть задача создать список с объектами у которых разные классы, но один базовый предок.
Потом нужно перебрать список и если объект одного класса, то одно делаем с другим классом другое.
Подскажите как это реализуется? Это задача для рисования объектов из списка.
Базовый класс CRootClass и от него CSector и CPosition.

Пока это мой неправильный вариант...

C++
1
2
3
4
5
6
7
list<CRootClass*>  pl;
list<CRootClass*>::iterator i;
for(i = pl.begin(); i != pl.end(); i++)
{
 
  if(typeid(*i)...
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.11.2010, 18:03
Ответы с готовыми решениями:

Приведение типов?
Подскажите, пожалуйста что происходит. Не понимаю почему такой код работает. .h class Km { private: static const...

Приведение типов
Добрый вечер! Реализовываю явное и не явное приведение типов. Есть два класса, сепаративных, A и B. Реализацию явного преобразования...

Приведение типов
Делаю программу, которая кроме всего прочего должна отсортировать массив. Использую для этого qsort. Вот что получилось: ...

5
Эксперт С++
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
26.11.2010, 18:13 2
Реализуется при помощи виртуальных функций. Создаём в базовом классе чистую виртуальную функцию и вызываем её при переборе списка. Каждому из потомков выписываем в той функции действия, которые надо произвести. За примерами - к Страуструпу, у него там тоже рисование разных фигур.
0
4 / 4 / 0
Регистрация: 13.07.2009
Сообщений: 83
26.11.2010, 18:28  [ТС] 3
А можно не через виртуальную функции. Просто у меня не одна и та же функция будет вызываться.
Я такое на Delphi делал, там были два оператора IS и AS.
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
26.11.2010, 20:45 4
Цитата Сообщение от yava Посмотреть сообщение
А можно не через виртуальную функции. Просто у меня не одна и та же функция будет вызываться.
Что значит не одна и та же? Подробнее.
0
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
26.11.2010, 22:51 5
yava, ты уверен, что в одном массиве должны лежать объекты, с которыми приходится работать по-разному? Может, функция всё-таки одна и та же? Или, может, завести два массива?
0
4 / 4 / 0
Регистрация: 13.07.2009
Сообщений: 83
29.11.2010, 19:06  [ТС] 6
Тема простая, это объекты для рисование на сцене, и надо определить какой объект из массива в фокусе курсора.
Я нашел как это приводить.
C++
1
2
3
4
5
6
7
    for(i = pool.begin(); i != pool.end(); i++)
    {
        if(dynamic_cast<CPosition*>(*i) != NULL)
        {
            CPosition* obj = dynamic_cast<CPosition*>(*i);
            obj->Render();  
        }
И никаких проблемов.
Всем спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.11.2010, 19:06
Помогаю со студенческими работами здесь

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

Приведение типов
Доброго времени суток. Пусть имеются две структуры struct Student { string FirstName; string LastName; int year;

Приведение типов
Доброго времени суток. Есть вопрос. Допустим: class Base { ..... } class Derived:public Base{ .... }

Приведение типов
Всем привет) Есть массив int a = {2 ,4 ,5 ,6 ,256} Числа располагаются по байтам в памяти так: 1б 2б 3б 4б 2 0 0 0 4 ...

Приведение типов
Привет всем! Компилятор выдает варнинг если сравниваются signed и unsigned значения.Допустим, код пересмотреть нельзя и изменить типы...


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

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

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Java Record или Kotlin Data Class: что лучше для неизменяемых данных
Wired 04.03.2025
Java Record и Kotlin Data Class - средства для работы с неизменяемыми структурами данных, каждое из которых предлагает свой уникальный подход к решению этой задачи. История их появления весьма. . .
Создание производительны­­х API с Java и gRPC
Wired 04.03.2025
В разработке производительность и масштабируемость микросервисных приложений играют ключевую роль. Традиционные REST API, несмотря на свою популярность и простоту, не всегда способны обеспечить. . .
Что нового в JDK 24
Wired 04.03.2025
JDK 24 знаменует собой значительный скачок в развитии Java, внося фундаментальные улучшения в производительность, безопасность и удобство разработки. Релиз включает множество революционых изменений,. . .
Разработка блокчейн с использованием Java: смарт-контракты и dApp
Wired 04.03.2025
Современная блокчейн-разработка на Java предоставляет разработчикам широкий спектр возможностей. В отличие от Solidity, который ограничен экосистемой Ethereum, Java позволяет создавать как. . .
WebAssembly в Kubernetes
stackOverflow 03.03.2025
В современной экосистеме облачных технологий WebAssembly (Wasm) становится все более значимым компонентом, предлагая уникальный подход к выполнению кода в распределенных системах. Эта технология. . .
GitHub Actions или Jenkins: Выбираем CI/CD платформу
stackOverflow 03.03.2025
Непрерывная интеграция и развертывание (CI/ CD) изменили подход к разработке программного обеспечения, превратив его в бесшовный процесс от написания кода до развертывания в продакшн. GitHub Actions и. . .
Автоматизация тестирования Pull Request в Kubernetes: Интеграция с GitHub Actions и GKE
stackOverflow 03.03.2025
Масштабные проекты с использованием Kubernetes требуют надежной системы тестирования изменений перед их внедрением в продакшн-среду. Традиционный подход с ручной проверкой Pull Request не справляется. . .
Tестирование Pull Request в Kubernetes с помощью vCluster
stackOverflow 03.03.2025
При работе с микросервисной архитектурой критически важно обеспечить качественное тестирование каждого изменения перед его слиянием в основную кодовую базу. Однако тестирование Pull Request в. . .
Использование пакета Context в Golang
bytestream 03.03.2025
Управление параллельными процессами в современных приложениях - сложная задача, особенно когда речь идет о микросервисной архитектуре и распределенных системах. Пакет context в Go - это гибкое. . .
WebAssembly и Go: Работа с DOM и обработка ошибок
bytestream 03.03.2025
WebAssembly представляет собой технологию, позволяющую запускать низкоуровневый код в браузере практически на нативной скорости. Особенно интересные возможности открываются при использовании. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru