Russian Qt Forum

Программирование => С/C++ => Тема начата: Sergius92 от Сентябрь 07, 2011, 05:44



Название: Виртуальные методы Qt
Отправлено: Sergius92 от Сентябрь 07, 2011, 05:44
Есть базовый класс Base  от него наследуется класс Child.
Код:
Base *f;
f = new Child;
После этого f имеет поля только из базового класса Base, а не полей из обоих классов (Base и Child). Наверное я чего-то не знаю, но этот же пример скомпилированный на обычном компиляторе С++ показывает что f получает поля обоих классов.


Название: Re: Виртуальные методы Qt
Отправлено: LisandreL от Сентябрь 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->
}


Название: Re: Виртуальные методы Qt
Отправлено: Sergius92 от Сентябрь 07, 2011, 06:45
LisandreL, спасибо за ответ. Действительно, что-то я сам себя обманывал)