Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.10.2016, 13:22   #1
Vladlena_B
Новичок
Джуниор
 
Регистрация: 09.10.2016
Сообщений: 1
Вопрос Иерархия, ООП, класс-коллекция

Написала программу с иерархией. Для её демонстрации нужно написать 2 класса-коллекции. Но у меня не получается коллекционировать в одной коллекции несколько классов одной ветви иерархии.
код:
Код:
int main()
{
	/* Коллекция №1 */
	Collection_1<Casuarius> bird_1;
	bird_1.add(new Casuarius);
	bird_1.add(new Apteryx_australis); // ошибка
	/* Коллекция №2 */
	Collection_2<Diomedea_amsterdamensis> bird_2;
        bird_2.add(new Diomedea_amsterdamensis);
	bird_2.add(new Diomedea_exulans); // ошибка
	return 0;
}
class Casuarius : public Casuariiformes {
	double size_egg = 15.5;
public:
	/* Конструктор */
	Casuarius() {}
	/* Метод */
    void voice();
	/*Свойства*/
	double get_size_egg();
	void print();
	char * type() const { return "Casuarius"; }
};
class Diomedea_amsterdamensis : public Diomedeidae {
	double lenght_beak = 6.6;
public:
	/* Конструктор */
	Diomedea_amsterdamensis() {}
	/*Методы*/
    void voice();
    void fly();
	/*Свойства*/
	double get_lenght_beak();
	void print();
	char * type() const { return "Diomedea_amsterdamensis"; }
};
class Apteryx_australis : public Apterygiformes {
	int size_egg = 1;
public:
	/* Конструктор */
	Apteryx_australis() {}
	/*Методы*/
	void voice();
	/*Свойства*/
	int get_size_egg();
	void print();
	char * type() const { return "Apteryx_australis"; }
};
class Diomedea_exulans : public Diomedeidae {
	double lenght_beak = 5.1;
public:
	/* Конструктор */
	Diomedea_exulans() {}
	/* Методы */
    void voice();
    void fly();
	/*Свойства*/
	double get_lenght_beak();
	void print();
	char * type() const { return "Diomedea_exulans"; }
};

Последний раз редактировалось Вадим Мошев; 09.10.2016 в 14:35.
Vladlena_B вне форума Ответить с цитированием
Старый 09.10.2016, 16:08   #2
Максай
Пользователь
 
Аватар для Максай
 
Регистрация: 21.07.2008
Сообщений: 40
По умолчанию

Код Вашей программы неполон, отсутствуют описания классов Collection_1, Collection_2, Casuariiformes, Diomedeidae, Apterygiformes. Без них точно сказать, чем именно вызвана ошибка - невозможно.
Максай вне форума Ответить с цитированием
Старый 09.10.2016, 20:27   #3
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Храни указатели (Т*) на базовый класс и следи за их освобождением.
Кстати, не стоит опускать скобки конструкторов
GreenWizard вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Коллекция + класс Madmaxisss C# (си шарп) 2 16.03.2013 13:27
ооп класс внутри класса Abuhamed PHP 2 02.04.2012 22:07
оцените класс(ооп) lowercase Общие вопросы Delphi 1 22.12.2010 22:25
Помощь с лабой: «Перегрузка операций» (ООП, класс-АТД, на с++) Nastja Помощь студентам 15 02.07.2010 14:09
иерархия классов ООП Astro4ka Помощь студентам 3 29.06.2010 23:34