Russian Qt Forum
Ноябрь 23, 2024, 19:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Виртуальные методы Qt  (Прочитано 3623 раз)
Sergius92
Гость
« : Сентябрь 07, 2011, 05:44 »

Есть базовый класс Base  от него наследуется класс Child.
Код:
Base *f;
f = new Child;
После этого f имеет поля только из базового класса Base, а не полей из обоих классов (Base и Child). Наверное я чего-то не знаю, но этот же пример скомпилированный на обычном компиляторе С++ показывает что f получает поля обоих классов.
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #1 : Сентябрь 07, 2011, 06:35 »

Наследование в Qt такое же, как и в любом другом С++.
В приведённо примере по f->имяМетода() будут доступны версии виртуальных функций, переопределённые в Child.

Прямого доступа к полям Child у вас не будет (это вы завираете). Можно привести указатель к нужному типу и там уже доступ будет.
Код
C++ (Qt)
Base *f;
f = new Child;
Child *child;
child = dynamic_cast< Child* >( f );
if ( child != 0 )
{
   child->
}
Записан
Sergius92
Гость
« Ответ #2 : Сентябрь 07, 2011, 06:45 »

LisandreL, спасибо за ответ. Действительно, что-то я сам себя обманывал)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.375 секунд. Запросов: 22.