![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
oshilan |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 21.3.2010 Репутация: нет Всего: 0 |
Дан базовый класс A и производный от него класс A_1. В A_1 есть дополнительное поле int x, которое не может использоваться через указатель на базовый класс. Так получается виртуальные функции могут быть реализованы только с классами, у которых одинаковые поля (методы)? Так зачем они тогда такие нужны, если производные классы всегда имеют дополнительные другие поля? Внизу есть пояснительный текст программы с ошибкой (VS C++ 2008). Просьба его подкорректировать, чтобы всё работало, как того хочет пользователь, тоесть я ))
|
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
как раз виртуальные функции и могут (скрыто для базового интерфейса ) общаться со всеми полями наследника, в котором они определены.. думаю стоит еще раз внимательно обратиться к соответсвующим главам книжки.. |
|||
|
||||
oshilan |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 21.3.2010 Репутация: нет Всего: 0 |
mes, спасибо за инфу... Только вот если бы ещё где-нибудь узнать, как к ним обратиться ))
Добавлено через 6 минут и 55 секунд Вроде нашёл: http://www.amse.ru/courses/cpp2/2010_12_06.html Если получится, исправлю листинг Добавлено через 11 минут и 27 секунд Не, что-то не могу )) Понял, что нужно обращаться через смещение this, но вот только как это сделать для меня загадка :) |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
к полям наследника ? только внутри функций наследника либо при явном приведении, но это уже из другой темы.. |
|||
|
||||
oshilan |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 21.3.2010 Репутация: нет Всего: 0 |
mes, кстати, я даже не заметил, что всё работает правильно ))) Просто у меня в лабораторке вызывается снова функция предка. Буду разбираться. Спасибо ))
|
|||
|
||||
newbee |
|
|||
![]() Бревно ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: 3 Всего: 19 |
базовый:
int a; virtual int stuff(){return a;} наследник: int b; virtual int stuff(){return a+b;} -------------------- You're face to face With man who sold the world |
|||
|
||||
oshilan |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 21.3.2010 Репутация: нет Всего: 0 |
newbee, спасибо, я тебя понял ))
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |