Название: Помогите с наследованием. Отправлено: Maz от Июнь 01, 2007, 11:36 Есть базовый класс - диалог отнаследованный от QDialog. В базовом классе есть виртуальная функция open(). В конструкторе базового класса вызывается эта виртуальная функция.
Есть дочерний класс - наследник базового класса. В дочернем классе тоже есть виртуальная функция open(). Собственно проблема: при создании дочернего класса не вызывается функция open() (хотя ее вызов прописан в базовом классе). Название: Помогите с наследованием. Отправлено: WW от Июнь 01, 2007, 12:47 приведи код конструктора
Название: Помогите с наследованием. Отправлено: Alex Forth от Июнь 01, 2007, 13:20 ГЫ!
Сам когда-то на таком спалился. В результате выяснил, что во время работы конструктора базового класса, экземплер имеет vtbl базового класса. Перед вызовом конструкотора производного класса генерится vtbl для производного класса. Отсюда мораль: из конструктора базового класса нельзся вызвать метод производного класса. Название: Помогите с наследованием. Отправлено: kitov от Июнь 02, 2007, 21:55 Абсолютно верно , Скотт Мейерс такого же мнения ;-)
Название: Помогите с наследованием. Отправлено: Вячеслав от Июнь 02, 2007, 22:29 Во время работы конструктора объекта еще нет :( соотвественно - существуют только предки .... А жаль :( Временами приходиться дико извращаться .....
Название: Помогите с наследованием. Отправлено: Вудруф от Июнь 04, 2007, 07:41 Ого, не знал. Век живи - век учись.
|