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

Динамически создать массив - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не могу найти ошибку! http://www.cyberforum.ru/cpp-beginners/thread775826.html
Вобщем вот программа. #include <iostream.h> #include <math.h> #include <iomanip.h> #include <conio.h> int main () { const int max = 500;
C++ Выбор контейнера Есть два варианта. Первый: map <pair <int,int>, int> my_map; map <pair <int,int>, int>::iterator p; p = my_map.find(make_pair(100,150)); Второй: http://www.cyberforum.ru/cpp-beginners/thread775824.html
C++ Перегрузка операторов -> <-
Здравствуйте в столь позднее время.. Какова особеность перегрузки операторов -> и . ? Что возвращают ? Если можно ссылки на стандарт...Заранее спасибо.
C++ Объекты класса
Приветствую вас) Подскажите пожалуйста какая структура у класса и его объектов в c++bilder К примеру создание класса и 3-х объектов внутри. Мучаюсь уже сутки и не могу понять...а нормальной литературы найти не получается( Заранее спасибо!
C++ Ошибка с статическими членами класса http://www.cyberforum.ru/cpp-beginners/thread775797.html
Доброго времени суток, форумчане! Недавно пришлось вернуться с С# на С++ и я тут же заметил что я все забыл( Итак по сути: Есть определение класса: static class control { public: static double u0;
C++ Найти все простые числа вида n^(n) + 1, меньше за 10^19 Мне надо создать программу. Задание вот такое: Найти все простые числа вида nn + 1, меншье за 1019. подробнее

Показать сообщение отдельно
eoLithic
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 32

Динамически создать массив - C++

31.01.2013, 05:22. Просмотров 542. Ответов 8
Метки (Все метки)

Все чуть посложнее, чем кажется.
Goat, Wolf, Cowboy - производные классы от Animal. Динамически создаем массивы из Goat и Wolf. Cowboy - только один. Затем, поскольку у них у всех есть виртуальные функции, которые мне надо использовать, я создаю массив указателей на тип Animal.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
cout<<"How many goats? ";  // Сколько коз в стаде
cin>>numberOfGoats;
Goat *ptrGoats = new Goat[ numberOfGoats ];
 
cout<<"How many wolves: "; // Сколько волков должны напасть
cin>>numberOfWolves;
Wolf *ptrWolves = new Wolf[ numberOfWolves ]; 
 
const int totalAnimals = numberOfWolves + numberOfGoats + 1; // Общее количество животных ( включая пастуха )
 
Animal *ptrAnimals[ totalAnimals ] = ptrGoats; // Вот тут и встает проблема. Если и тут динамически выделить память,
ptrAnimals[ totalAnimals - numberOfWolves ] = ptrWolves;  // то встает другая проблема. О ней ниже.
ptrAnimals[ totalAnimals - 1 ] = &cowboy;
Animal *ptrAnimals[ totalAnimals ] = ptrGoats; можно сделать типа: Animal *ptr = new Animal[ totalAnimals ]; , но в этом случае не получается заставить ptrAnimals указывать на ptrGoats, и на ptrWolves и на Cowboy.
А если этого не сделать, то меня ждет морока в коде и дописывание кучи циклов для каждого производного класса, когда можно все запихнуть в один массив и вызывать их виртуальные функции в одном цикле.

Есть идеи решения этой проблемы?

Добавлено через 4 минуты
И раз пошла такая пьянка, то еще один вопрос:
Есть базовый класс, есть производный класс. В базовом классе есть public функция "Кушать". Она ведь наследуется производному классу, не так ли? Ее не надо объявлять в интерфейсе производного класса или надо?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru