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

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

Войти
Регистрация
Восстановить пароль
 
ArtVgd
1 / 1 / 0
Регистрация: 13.11.2012
Сообщений: 23
#1

Dynamic Cast C++ - C++

13.01.2013, 13:50. Просмотров 496. Ответов 4
Метки нет (Все метки)

Прошу объяснить, что я делаю не так..

Есть у меня три класса: Man - базовый, Staff и Student - производные. Виртуализированы.

Далее создаю общий массив указателей Man* Mass, на 8 человек. В него произвольно запихиваю объекты Staff и student: 3 и 5 соотв.

И с помощью цикла хочу отсортировать Staff и Student. Я для этого создаю ещё два массива. (Но может, вы подскажите, как можно не создавать доп. массивы, а как-нибудь сделать лучше?)

И с пом. цикла пытаюсь разнести их по разным массивам:

C++
1
2
3
4
5
6
7
8
9
10
11
for(int i=0; i<8; i++)
{
      if(dynamic_cast<Student*>(Mass [i]))
       {
           Mass [i] = stud_temp [l++];
       }
      else
       {
           Mass [i] = prepod_temp [k++];
       }
}
Такой код компилить не хочет, если поставить амперсант перед Mass [i] в условии, то компилит, но не хочет ничего приводить. (Но ведь Mass[i] - это указатель, там не нужен амперсант?!) В чём я туплю?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2013, 13:50     Dynamic Cast C++
Посмотрите здесь:

Что возвращает cast оператор? - C++
template &lt;class T&gt; class A { operator T () const {return value;} private: T value; }

Pointers and dynamic arrays - C++
Изучаю тему указатели и динамичесские массивы в классах. Хотелось бы быть уверенным в следующих ответах: 1) Когда класс использует...

Makefile dynamic library creation error - C++
Добрый день. Создал makefile со следующим содержанием: # Project PROJECT_NAME=StarXml EXECUTABLE=StarXml # Dirs TARGET_DIR=bin...

литература shared objects & dynamic shared objects - C++
Привет, товариСЧи. Подкиньте пожалуйста пару тройку книженций по теме инглиш тоже пойдет, но лучше рус. Добавлено через 42 минуты ...

Unchecked cast - Java SE
Добрый день, Объясните, пожалуйста, как лучше всего обойти ошибку приведения типов. Ситуация такая: для хранения упорядоченного...

lexical cast - Boost C++
есть шаблонный класс внутри делается каст к инту все это внутри dll template &lt;class T&gt; class A { public: A(T...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Igor3D
943 / 476 / 43
Регистрация: 01.10.2012
Сообщений: 2,372
13.01.2013, 14:05     Dynamic Cast C++ #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
bool MyComp( Man * m1, Man * m2 )
{
 int student1 = dynamic_cast <Student *>(m1) != 0; 
 int student2 = dynamic_cast <Student *>(m2) != 0; 
 return student1 < student2;
}
 
std::vector <Man *> vec;
vec.push_back(new Student);
vec.push_back(new Staff);
...
std::sort(vec.begin(), vec.end(), MyComp);  // сортируем - сначала Staff, потом Student

Не по теме:


Хорошим тоном считается начинать все имена классов с одной (большой) буквы, напр CMan, CStudent

soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
13.01.2013, 14:09     Dynamic Cast C++ #3

Не по теме:

Цитата Сообщение от Igor3D Посмотреть сообщение
Хорошим тоном считается начинать все имена классов с одной (большой) буквы, напр CMan, CStudent
Весьма сомнительно. Достаточно просто первую букву делать заглавной



Цитата Сообщение от ArtVgd Посмотреть сообщение
И с помощью цикла хочу отсортировать Staff и Student.
У них есть общий признак, по которому их можно сравнить?
ArtVgd
1 / 1 / 0
Регистрация: 13.11.2012
Сообщений: 23
13.01.2013, 14:13  [ТС]     Dynamic Cast C++ #4
Igor3D, а можно не через вектор? (по заданию, нужен именно обычный массив указателей)
Спасибо.

Добавлено через 51 секунду
soon, признак - это сначала пусть идут Staff, потом - Student, например. Только по названию класса, если так можно выразиться..
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2013, 14:26     Dynamic Cast C++
Еще ссылки по теме:

CAST() преобразование в дату - MySQL
Добавил колонку в таблицу $sql_1=&quot;ALTER TABLE `my` ADD `time2` date&quot;; Теперь хочу использовав CAST() вставить время $sql_1=&quot;INSERT...

Implicit operator cast - C#
Доброго времени суток. Скорее всего что вопрос глупый, но всё же хотелось бы узнать другое мнение. Допустим есть такой код: class A { ...

Cast from const_iterator to iterator - C++
Доброго времени суток. Существует ли способ просто и быстро вытащить итератор из константного итератора? Вариант с distance не...

Cast from ArrayList ot ObservableList - JavaFX
Как перейти от ArrayList к ObsevableList ?


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

Или воспользуйтесь поиском по форуму:
Igor3D
943 / 476 / 43
Регистрация: 01.10.2012
Сообщений: 2,372
13.01.2013, 14:26     Dynamic Cast C++ #5
Цитата Сообщение от ArtVgd Посмотреть сообщение
Igor3D, а можно не через вектор? (по заданию, нужен именно обычный массив указателей)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
// std::vector <Man *> vec;
// vec.push_back(new Student);
// vec.push_back(new Staff);
// ...
// std::sort(vec.begin(), vec.end(), MyComp);
//
typedef Man * ManPtr;
int numAllocated = 8, count = 0;
ManPtr * arr = new ManPtr[numAllocated];
arr[count++] = new Student;
arr[count++] = new Staff;
...
std::sort(arr, arr + count, MyComp);
Yandex
Объявления
13.01.2013, 14:26     Dynamic Cast C++
Ответ Создать тему
Опции темы

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