![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
Игорек |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 9.12.2009 Репутация: 1 Всего: 1 |
примерно так выглядит задание
реализовать иерархию классов, изменяя отдельные методы и добавляя члены-данные (по усмотрению студента и преподавателя). В иерархию должно входить 2-3 производных класса. Несколько методов (по смыслу) должны быть виртуальными. Реализовать класс – двунаправленный список объектов классов наследников. Изменить демонстрационную программу так, чтобы она демонстрировала полиморфическое поведение классов. Исследовать, как реализуется механизм полиморфизма. в общем как я понял от класса родителя порождаем 2х наследников и создаём двунаправленный список который может содержать как одного так и другого наследника вот часть моего творения остальное думаю значения не имеет....... class Time1 { int day; int hour; int min; int sec; public: char * month; static int count; Time1(){ month = NULL; day=0; hour=0; min=0; sec=0; } //пустой конструктор Time1(char *mon,int d,int h,int m,int s){ month = new char [strlen(mon)+1]; strcpy(month,mon); day=d;hour=h;min=m;sec=s;Time::count++; } //конструктор с параметрами Time1(Time1 & a){ month = new char [strlen(a.month)+1]; strcpy(month,a.month); day=a.day; hour=a.hour; min=a.min; sec=a.sec; count++; } //конструктор копирования virtual void Print(){ cout<<"Месяц:"<<month<<"\n"<<"День:"<<day<<"\n"<<"час:"<<hour<<"\n"<<"минута:"<<min<<"\n"<<"секунда:"<<sec<<"\n"<<"count ="<<Time::count<<endl; } virtual ~Time1(){} //деструктор friend class Str; friend class Sob; }; class Str: public Time1{ char str[100]; public: Str():Time1(){} Str(char *mon,int d,int h,int m,int s,char st[100]):Time1(mon,d,h,m,s){ strcpy(str,st); } void show(){ Time1::Print(); cout<<str<<endl; } ~Str(){ delete [] month ; } //деструктор }; class Sob: public Time1{ char str[100]; public: Sob():Time1(){} Sob(char *mon,int d,int h,int m,int s,char st[100]):Time1(mon,d,h,m,s){ strcpy(str,st); } void show(){ Time1::Print(); cout<<str<<endl; } ~Sob(){ delete [] month ; } //деструктор }; struct Spisok{ Time1 *a; //изначально тип объекта родительский в последствии надеюсь привести к одному из потомков Spisok *next; Spisok *prev; }; пытался приводить примерно так tek ->next = new(Spisok); //tek указатель на текущий элемент tek->next->a = new Str; dynamic_cast<Str *>(tek->next->a); и даже если это и работает и все действительно приводится то как мне потом вызвать функцию вывода на экран из потомка (предлагается только родительская) |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: нет Всего: 250 |
||||
|
||||
Игорек |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 9.12.2009 Репутация: 1 Всего: 1 |
Реализовать класс – двунаправленный список объектов классов наследников. то есть список должен содержать объекты типа наследников (в моём случае 2х) элементы списка могут содержать различные данные отсюда и приведение берётся... |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: нет Всего: 250 |
||||
|
||||
Игорек |
|
||||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 9.12.2009 Репутация: 1 Всего: 1 |
можно подробнее Добавлено через 10 минут и 17 секунд вроде разобрался |
||||
|
|||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: нет Всего: 250 |
двух наследников Вы как кого хранить будете ? как родителя ? ну и что еще нужно ? зачем родителя куда то опять приводить ? Это сообщение отредактировал(а) mes - 4.1.2011, 19:52 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |