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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите с наследованием.  (Прочитано 4020 раз)
Maz
Гость
« : Июнь 01, 2007, 11:36 »

Есть базовый класс - диалог отнаследованный от QDialog. В базовом классе есть виртуальная функция open(). В конструкторе базового класса вызывается эта виртуальная функция.
Есть дочерний класс - наследник базового класса. В дочернем классе тоже есть виртуальная функция open().
Собственно проблема: при создании дочернего класса не вызывается функция open() (хотя ее вызов прописан в базовом классе).
Записан
WW
Гость
« Ответ #1 : Июнь 01, 2007, 12:47 »

приведи код конструктора
Записан
Alex Forth
Гость
« Ответ #2 : Июнь 01, 2007, 13:20 »

ГЫ!
Сам когда-то на таком спалился. В результате выяснил, что во время работы конструктора базового класса, экземплер имеет vtbl базового класса. Перед вызовом конструкотора производного класса генерится vtbl для производного класса. Отсюда мораль: из конструктора базового класса нельзся вызвать метод производного класса.
Записан
kitov
Гость
« Ответ #3 : Июнь 02, 2007, 21:55 »

Абсолютно верно , Скотт Мейерс такого же мнения ;-)
Записан
Вячеслав
Гость
« Ответ #4 : Июнь 02, 2007, 22:29 »

Во время работы конструктора объекта еще нет Грустный соотвественно - существуют только предки .... А жаль Грустный Временами приходиться дико извращаться .....
Записан
Вудруф
Гость
« Ответ #5 : Июнь 04, 2007, 07:41 »

Ого, не знал. Век живи - век учись.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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