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

объясните по полиморфизму - C++

Восстановить пароль Регистрация
 
wolflik
0 / 0 / 0
Регистрация: 20.06.2012
Сообщений: 8
18.09.2013, 15:42     объясните по полиморфизму #1
здравствуйте,

не могу разобраться с следующей деталью:
есть базовый класс, и несколько производных от него классов. У всех производных классов есть указатель на список. Могу ли я определить метод добавления элемента в список только в базовом классе?

пытался сделать, но при вызове "производный класс.insert(данные);", он пытается добавить в список базового класса.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2013, 15:42     объясните по полиморфизму
Посмотрите здесь:

C++ объясните
C++ объясните
объясните C++
C++ Объясните sizeof()
Вопрос по динамическому полиморфизму C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
18.09.2013, 16:10     объясните по полиморфизму #2
Цитата Сообщение от wolflik Посмотреть сообщение
он пытается добавить в список базового класса.
Как понять? Получается, что производный класс содержит и свой список, и список, который наследуется из базового класса?
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
18.09.2013, 16:11     объясните по полиморфизму #3
лучше сразу код давайте
wolflik
0 / 0 / 0
Регистрация: 20.06.2012
Сообщений: 8
18.09.2013, 16:21  [ТС]     объясните по полиморфизму #4
Цитата Сообщение от ViktorKozlov Посмотреть сообщение
Как понять? Получается, что производный класс содержит и свой список, и список, который наследуется из базового класса?
получается так, да
есть ли возможность убрать список с базового класса, но определение метода, работающего со списком в производных классах оставить в базовом?
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
18.09.2013, 16:32     объясните по полиморфизму #5
Цитата Сообщение от wolflik Посмотреть сообщение
он пытается добавить в список базового класса.
как он пытается добавить в список базового как вы об этом узнаете?
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
18.09.2013, 16:44     объясните по полиморфизму #6
Цитата Сообщение от wolflik Посмотреть сообщение
получается так, да
есть ли возможность убрать список с базового класса, но определение метода, работающего со списком в производных классах оставить в базовом?
Нельзя, так как чтобы обращаться к списку в методе класса, он (список) как минимум должен быть в этом классе. Можно метод сделать чисто-виртуальным, т.е. без реализации, но в производных классах его придется переопределить. Да и что мешает сделать этот список в базовом классе, если производные автоматом будут наследовать его?
wolflik
0 / 0 / 0
Регистрация: 20.06.2012
Сообщений: 8
18.09.2013, 16:55  [ТС]     объясните по полиморфизму #7
Цитата Сообщение от ViktorKozlov Посмотреть сообщение
Нельзя, так как чтобы обращаться к списку в методе класса, он (список) как минимум должен быть в этом классе. Можно метод сделать чисто-виртуальным, т.е. без реализации, но в производных классах его придется переопределить. Да и что мешает сделать этот список в базовом классе, если производные автоматом будут наследовать его?
хорошо. В базовом определю список, которые унаследуют производные. Но методы, как ни крути, все равно придется переопределять для каждого производного класса?

я это для чего: например от базового наследуем штук 10 производных классов. И методы работы со списком в них одинаковые. Хотелось бы опередлить их один раз.
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
18.09.2013, 16:57     объясните по полиморфизму #8
Цитата Сообщение от wolflik Посмотреть сообщение
хорошо. В базовом определю список, которые унаследуют производные. Но методы, как ни крути, все равно придется переопределять для каждого производного класса?

я это для чего: например от базового наследуем штук 10 производных классов. И методы работы со списком в них одинаковые. Хотелось бы опередлить их один раз.
Так определите один метод в базовом классе. В производных он тоже будет наследоваться
wolflik
0 / 0 / 0
Регистрация: 20.06.2012
Сообщений: 8
18.09.2013, 17:01  [ТС]     объясните по полиморфизму #9
Цитата Сообщение от ViktorKozlov Посмотреть сообщение
Так определите один метод в базовом классе. В производных он тоже будет наследоваться
а после этого базовый можно будет определить абстрактным?
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
18.09.2013, 17:16     объясните по полиморфизму #10
Цитата Сообщение от wolflik Посмотреть сообщение
а после этого базовый можно будет определить абстрактным?
можно, всмысле базовый класс определить абстрактным
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2013, 17:31     объясните по полиморфизму
Еще ссылки по теме:

Объясните программу C++
C++ Объясните
Какое отношение имеет перегрузка к полиморфизму? C++

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

Или воспользуйтесь поиском по форуму:
wolflik
0 / 0 / 0
Регистрация: 20.06.2012
Сообщений: 8
18.09.2013, 17:31  [ТС]     объясните по полиморфизму #11
спасибо, все получилось.
Yandex
Объявления
18.09.2013, 17:31     объясните по полиморфизму
Ответ Создать тему
Опции темы

Текущее время: 05:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru