![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Nendis |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 26.11.2010 Репутация: нет Всего: нет |
Есть класс:
class A { public: virtual string print() {cout << "A"}; } и class B : public A { public: virtual string print() {cout << "B"}; } Я создаю коллекцию-вектор: vector<A> mylst; далее заполняю ее след образом: mylst[0] = A(); mylst[1] = B(); При обращении в цикле к каждому елементу и вызову функции Print() всегда печатаеться сообщение "A" как исправить - что бы печаталось сначала "А" а потом "В" ? |
|||
|
||||
NoviceF |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 13.3.2012 Где: Ростов-на-Дону Репутация: 2 Всего: 2 |
Так как вектор принимает объекты по значению, происходит срезка и в векторе конструируются только объекты А.
Если нужен полиморфизм, то нужно использовать указатели или ссылки. |
|||
|
||||
Nendis |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 26.11.2010 Репутация: нет Всего: нет |
Спасибо за ответ. Не могли бы привести мне пример объявления коллекции с поддержкой такого полиромфизма. Если честно, в указателях не силен, а пример в интернете подбной реализации затрудняюсь найти.
|
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 1 Всего: 110 |
например, так
-------------------- qqq |
|||
|
||||
NoviceF |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 13.3.2012 Где: Ростов-на-Дону Репутация: 2 Всего: 2 |
Ну для полноты картины
http://liveworkspace.org/code/3ijTV2$13 |
|||
|
||||
VSB |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 23.8.2007 Репутация: нет Всего: 2 |
NoviceF, ну уж если по-правильному, то так
http://liveworkspace.org/code/1Xz9lx$1 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |