|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
01.05.2009, 10:10 | #1 |
Пользователь
Регистрация: 03.12.2008
Сообщений: 76
|
Создание своего класса, наследование от предка
Сталкиваюсь чес говоря впервые, нужно создать 2 класса, соответственно 2 обьекта, грубо говоря свойства обьектов, методы прорисовки и т.п. должны наследоваться от еще одного класса. Соответственно классов должно быть 3: предок и 2 потомка. Все бы ничего, но как корректно написать конструктор и деструктор каждого из потомков? Выдает либо ошибку переполнения стека, либо еще херь какую-то...
При установке Линукс не пострадало ни одного пингвина... Зато пострадало много дятлов..
|
01.05.2009, 10:33 | #2 |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
То что выполнялось в конструкторе предка, выполнится и в конструкторе потомка. А деструктор высвобождает память, занятую объектом + то что вы напишете там. Что происходит у вас по этим событиям?
Изобретатель велосипедов
|
01.05.2009, 10:43 | #3 |
Пользователь
Регистрация: 03.12.2008
Сообщений: 76
|
В потомках идет прорисовка 2-х фигур, в предке, как я уже говорил, методы рисования, контроля границ и т.п. .. Фигуры отрисовываются на пейнтбоксе, чтобы между ними переключиться, должно быть 2 радиобаттона.. Допустим, если ончеккед = истина 1-го радиобаттона, тогда вызывается конструктор 1-й фигуры, деструктор 2-й, соответственно истина 2-го - деструктор первой и конструктор 2-й.
При установке Линукс не пострадало ни одного пингвина... Зато пострадало много дятлов..
|
01.05.2009, 11:11 | #4 |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
А зачем каждый раз пересоздавать объект? Легче по-моему сделать какое-нибудь свойство, например Visible, которое определяет, рисуется ли фигура.
Изобретатель велосипедов
|
01.05.2009, 11:17 | #5 |
Пользователь
Регистрация: 03.12.2008
Сообщений: 76
|
Понимаю что легче, но по заданию необходима инициализация в конструкторе класса фигуры, и уничтожение через деструктор..
При установке Линукс не пострадало ни одного пингвина... Зато пострадало много дятлов..
|
01.05.2009, 11:23 | #6 |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
Тогда можно в предке прописать очистку от любой фигуры, а в наследниках только прорисовку, тогда по деструктору любого наследника будет очищаться поле рисования.
Изобретатель велосипедов
|
01.05.2009, 11:30 | #7 |
Пользователь
Регистрация: 03.12.2008
Сообщений: 76
|
Код:
При установке Линукс не пострадало ни одного пингвина... Зато пострадало много дятлов..
|
01.05.2009, 11:31 | #8 |
Пользователь
Регистрация: 03.12.2008
Сообщений: 76
|
Грубо говоря, создам еще 2 потомка, описанный в коде класс оставлю предком. Как корректно прописань конструктор, вот что понять не могу. Ну и деструктор соответственно
При установке Линукс не пострадало ни одного пингвина... Зато пострадало много дятлов..
|
01.05.2009, 11:37 | #9 |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
Можно сделать наследование метода TFigure.Krest2, где происходит рисование, тогда обратившись к наследнику как к TFigure (TFigure(NextObject).Krest2) вы сможете вызвать переписанный метод рисования для уже следующего класса. Я так понимаю что в конструкторе вам следует просто поместить вызов процедуры рисования krest2 , предварительно описав её в классе.
Изобретатель велосипедов
|
01.05.2009, 11:50 | #10 |
Пользователь
Регистрация: 03.12.2008
Сообщений: 76
|
это будет выглядеть как,
Код:
При установке Линукс не пострадало ни одного пингвина... Зато пострадало много дятлов..
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание своего класса в Delphi 7 - фигуры для шахматной доски | electric | Компоненты Delphi | 18 | 24.10.2013 15:06 |
создание своего архиватора | kuzmich | Общие вопросы Delphi | 9 | 08.01.2009 06:17 |
Создание своего класса | AlexandrSid | Общие вопросы Delphi | 3 | 19.05.2008 13:28 |
Создание своего формата | AnaSha | Microsoft Office Excel | 1 | 09.01.2007 16:20 |