![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
![]()
Здравствуйте!
Осваиваю С++ и в данный момент возникла проблема с виртуальным методом. В упрощенном виде пример выглядит так: Есть базовый класс Код:
Пробовал по-другому: Код:
Что нужно написать, чтобы добиться желаемого эффекта? Заранее спасибо.
Изобретатель велосипедов
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
как ругается то?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
![]()
"Ссылка на неразрешенный внешний символ ...",
что, очевидно, связано с абстрактностью метода. А абстрактным он остался именно из-за существования описанной проблемы - метод при вызове из базового Collection виртуальным не считается...(
Изобретатель велосипедов
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
![]()
Selestis
вызов не проходит по цепочке наследования(вызывается только базовый пустой Clear() {;}. Что нужно написать, чтобы добиться желаемого эффекта? вариантов у тебя ровно DVA: 1. смириться с тем, что вызов виртуальной функции в деструкторе происходит без учёта виртуальности 2. выбрать более другой язык программирования, где такой вызов возможен
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
хм, действительно не компилит
![]() странно. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. Последний раз редактировалось Пепел Феникса; 09.09.2011 в 18:13. |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
![]()
Rififi
Видимо, 1))) Наверное, придется переопределять деструктор и там для каждого класса вызывать свой Clear... Но если кто-то что-то всё же сообразит, буду рад.
Изобретатель велосипедов
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с виртуальным хостом | hxt | PHP | 0 | 03.11.2010 18:17 |
По численным методам | VovaZZ | Общие вопросы C/C++ | 0 | 20.10.2010 17:20 |
Помогите пожалуйста с виртуальным собеседником | BrokenDream | Обсуждение статей | 1 | 07.10.2009 08:19 |
Вопрос Дня по методам С++ | Alitrix | Общие вопросы C/C++ | 4 | 17.06.2009 09:29 |
C# доступ к методам класса. | Lime | Общие вопросы .NET | 4 | 03.03.2009 20:51 |