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

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

Войти
Регистрация
Восстановить пароль
 
yava
3 / 3 / 0
Регистрация: 13.07.2009
Сообщений: 83
#1

Приведение типов - C++

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

Есть задача создать список с объектами у которых разные классы, но один базовый предок.
Потом нужно перебрать список и если объект одного класса, то одно делаем с другим классом другое.
Подскажите как это реализуется? Это задача для рисования объектов из списка.
Базовый класс 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2010, 18:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Приведение типов (C++):

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

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

Приведение типов - C++
В чем различие привидения типа (type)expression, от type(expression)?

Приведение типов - C++
Есть ли какая-нибудь разница в следующих выражениях: float a = 123.4f и float a = (float)123.4

приведение типов - C++
Объясните, пожалуйста, почему возникает такая ошибка: error C2666: 'operator *' : 4 overloads have similar conversions ? Из-за того,...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nick Alte
Эксперт С++
1637 / 1009 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
26.11.2010, 18:13 #2
Реализуется при помощи виртуальных функций. Создаём в базовом классе чистую виртуальную функцию и вызываем её при переборе списка. Каждому из потомков выписываем в той функции действия, которые надо произвести. За примерами - к Страуструпу, у него там тоже рисование разных фигур.
0
yava
3 / 3 / 0
Регистрация: 13.07.2009
Сообщений: 83
26.11.2010, 18:28  [ТС] #3
А можно не через виртуальную функции. Просто у меня не одна и та же функция будет вызываться.
Я такое на Delphi делал, там были два оператора IS и AS.
0
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
26.11.2010, 20:45 #4
Цитата Сообщение от yava Посмотреть сообщение
А можно не через виртуальную функции. Просто у меня не одна и та же функция будет вызываться.
Что значит не одна и та же? Подробнее.
0
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
26.11.2010, 22:51 #5
yava, ты уверен, что в одном массиве должны лежать объекты, с которыми приходится работать по-разному? Может, функция всё-таки одна и та же? Или, может, завести два массива?
0
yava
3 / 3 / 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2010, 19:06
Привет! Вот еще темы с ответами:

Приведение типов - C++
Доброго времени суток. Данный кусок кода выделяет целую часть. Потом, вычитая из исходного числа целую часть, получаем дробную. Почему...

Приведение типов - C++
При вводе с клавиатуры s = 11 и a = 1.1, получаем 9. Результат переменной d = 10, это правильно. В чём подвох? int main() { ...

Приведение типов - C++
Как компилятор заставить адекватней приводить типы? (VS2012) Например: int a=-1; unsigned int b=5; if(a&gt;b){...}//Условие...

Приведение типов - C++
Уважаемые программеры, ПОМОГИТЕ!!! Нужно (мне) реализовать шаблонную функцию для приведения типов. Пример: newType_cast&lt;T&gt;(“123”); ...


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

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

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