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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
RealDreamy
0 / 0 / 0
Регистрация: 20.02.2010
Сообщений: 29
#1

Указатель на потомка в базовом классе. - C++

08.03.2010, 13:20. Просмотров 1157. Ответов 6
Метки нет (Все метки)

Мне нужно создать в базовом классе массив указателей на потомки этого класса. Помогите - как это сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2010, 13:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Указатель на потомка в базовом классе. (C++):

Указатель дочернего класса в базовом - C++
Добрый день. ОШИБКА: ..\main.cpp:6: error: invalid use of incomplete type 'struct A' ..\main.cpp:3: error: forward declaration of...

Как работают static-переменные объявленные в в базовом классе? - C++
Информации увидел много, но суть так и не могу уловить. Образовалась пара вопросов: 1. Если я создаю static-переменную в классе и делаю...

Как избежать не нужной пустой реализации виртуальных методов в базовом классе? - C++
Для наглядности: class BASE { public: BASE(); ~BASE(); virtual void Do();

Почему без пустого целочисленного поля в базовом классе программа виснет? - C++
Итак, имеет три маленьких файлика: //expclasses10l.h class CLB { public: int erunda; CLB(); ...

Перегрузить операцию сложения в базовом классе, который имеет два наследника - C++
Как перегрузить операцию сложения в базовом классе, который имеет два наследника(объекты которых как раз и надо сложить)

Создать массив в базовом абстрактном классе, и его передать функциям производных классов - C++
есть полностью абстрактный (виртуальный) класс. там все функции виртуальные и равны 0. Назовем его class A есть 3 производных ОТ НЕГО...

6
Norby
65 / 65 / 2
Регистрация: 12.03.2008
Сообщений: 392
08.03.2010, 13:24 #2
Попробуй предописать класс. А потом ниже в самом объявлении класса создавать массив.
0
Nick Alte
Эксперт С++
1641 / 1013 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
08.03.2010, 13:25 #3
А зачем тебе указывать именно на потомков? Нет, ну если уж совсем приспичило, можно просто предварительно объявить:
C++
1
2
3
4
5
6
class Derived;
class Base {
    Derived *d[20];
};
 
class Derived: public Base {};
Но вообще сам факт того, что у тебя возникла такая необходимость, обычно свидетельствует, что у тебя в замысле что-то пошло серьёзно наперекосяк.
1
RealDreamy
0 / 0 / 0
Регистрация: 20.02.2010
Сообщений: 29
08.03.2010, 13:39  [ТС] #4
Спасибо за помощь, работает.
0
M128K145
Эксперт С++
8297 / 3517 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
08.03.2010, 15:59 #5
RealDreamy, ознакомьтесь с понятием полиморфизм. Вам незачем создавать массив указателей на потомков, вам достаточно всего лишь создать массив указателей на базовый класс
0
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
08.03.2010, 18:07 #6
...и не забыть про виртуальные функции
0
RealDreamy
0 / 0 / 0
Регистрация: 20.02.2010
Сообщений: 29
18.03.2010, 06:11  [ТС] #7
Цитата Сообщение от M128K145 Посмотреть сообщение
RealDreamy, ознакомьтесь с понятием полиморфизм. Вам незачем создавать массив указателей на потомков, вам достаточно всего лишь создать массив указателей на базовый класс
Но ведь в потомках есть поля, которых нет в базовом классе. О виртуальных функциях посмотрю, не припомню, что это такое)
Я просто раньше не прогал на ООП, и вообще серьезных программ не писал. Сейчас пишу меню, в котором может быть неограниченное количество подменю любого уровня вложенности, что бы можно было убравлять мышой, и возможность использования сочетания клавиш. В общем полноценное продуманное меню хочу сделать, чисто ради интереса и опыта. Для удобства сделал класс Menu, и два потомка MainMenu и PodMenu, так как они существенно отличаются по прорисовке, ну и еще несколько особенностей. Вот и понадобилось что бы и в главном меню, и в подменю были ссылки на другие подменю.
0
18.03.2010, 06:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.03.2010, 06:11
Привет! Вот еще темы с ответами:

В базовом классе вводится символьный массив, а в производном - проверка на максимальную длину строки - C++
Здравствуйте. Помогите найти ошибку при наследовании класса. Есть такая проблема - в базовом классе вводится символьный массив, а в...

Вызов метода потомка через указатель на родителя - C++
Всем доброго времени суток, никак не придумаю, как провернуть такое: Пишу простенькую игру на cocos2dx. Есть первый класс, CNode - он...

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

базовый и производный класс, в базовом объявлена переменная "protected", она недоступна по имени в производном классе! template <class T> воду мутит! - C++
Друзья! Вот код #include &lt;stdio.h&gt; template &lt;class T&gt; class otets { protected: int peremennaya; }; template &lt;class...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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