Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как создать свой конструктор с другими параметрами? [D6, WinXP]


Страницы:   1 2

MadLesS ©   (2005-03-03 21:06:00) 

Я создаю класс на основе TComponent и переписываю у него конструктор:
constructor Create(AOwner: TComponent; MaskName, SpriteName, CoordName: String); override
Но цомпилятор матерится, типа у него параметры отличаются.
Я тогда вместо override нарисовал overload, а он мне, буржуй иностранный, говорит, что метод предка будет скрыт, хоть и компилюкает. Возможно ли этого вообще избежать?


Юрий Зотов   (2005-03-04 01:34:00) [21]

> jack128 ©   (04.03.05 00:43) [11]

> толк может и есть, если есть какое то чаще всего используемое
> значение параметра I.

Например, задаваемое в виртуальном классовом методе. Еще больше виртуальности получается, однако...
:о)

Да ведь и пример конструктора с Integer - это всего лишь пример, на деле же можно делать что угодно. Например, растроить или расчетверить или рас_N_рить цепочку - и все одним и тем же способом. И все, вроде как, вполне виртуально.

Интересные возможности здесь открываются, по-моему.


jack128   (2005-03-04 00:43:00) [22]

А толку от неё?? Мы ведь не можем в дезин тайм создать форму с I отличным от нуля. Ну то есть толк может и есть, если есть какое то чаще всего используемое значение параметра I..


Юрий Зотов   (2005-03-03 23:40:00) [23]

> MadLesS ©   (03.03.05 21:06)  
> вместо override нарисовал overload, а он мне, буржуй
> иностранный, говорит, что метод предка будет скрыт,
> хоть и компилюкает. Возможно ли этого вообще избежать?

constructor Create(...); reintroduce; overload;
reintroduce - посмотрите в справке.

> jack128 ©   (03.03.05 21:54) [9]
> естественнно о виртуальности (в частности о использовании
> в дезин тайм) можно забыть

Вот такой код, по крайней мере, спокойно компилится. В работе не проверял, но почему-то надеюсь, что и работать будет.
:о)

type
 TForm1 = class(TForm)
 public
   constructor Create(AOwner: TComponent); overload; override;
   constructor Create(I: integer); reintroduce; overload; virtual;
 end;

 TForm2 = class(TForm1)
 public
   constructor Create(I: integer); override;
 end;

constructor TForm1.Create(I: integer);
begin
 inherited Create(Application)
end;

constructor TForm1.Create(AOwner: TComponent);
begin
 Create(0)
end;

constructor TForm2.Create(I: integer);
begin
 inherited
end;


Получаем новую виртуальную цепочку, как ответвление от прежней?
:о)


jack128   (2005-03-03 21:54:00) [24]

constructor Create(AOwner: TComponent; MaskName, SpriteName, CoordName: String); reintroduce; естественнно о виртуальности(в частности о использовании в дезин тайм) можно забыть ;-)


Anatoly Podgoretsky   (2005-03-03 21:39:00) [25]

Как мне кажется, для перегрузки и для виртуальности оба модификатора должны использоваться одновременно, но это требует проверки.


Anatoly Podgoretsky   (2005-03-03 21:38:00) [26]

Более красиво, когда разные имена, строго отвечающие за особенности конструкторов.


MadLesS   (2005-03-03 21:30:00) [27]

Ну пасиба за разъяснения. Просто я хотел, чтобы всё было красиво что-ли. Но по вашим ответам ясно, что не судьба. Будем знать


Anatoly Podgoretsky   (2005-03-03 21:25:00) [28]

А зачем тебе именно Сreate?
Почему не устраивает MyСreate?
По поводу хотелки 0 вам шашечки или ехать?


MadLesS   (2005-03-03 21:22:00) [29]

Извините за беспросветность. Вы имеете ввиду задать ему Имя, отличное от Create? Если так, то я хочу именно чтобы было Create. Такое реально?


Anatoly Podgoretsky   (2005-03-03 21:18:00) [30]

А так
constructor Имя(формальные параметры); модификаторы;


MadLesS   (2005-03-03 21:16:00) [31]

Это в каком смысле с обычным? А если я не хочу разых имён. Возможно ли переопределить метод предка изменив его параметры и чтобы не появлялись варнинги?


Anatoly Podgoretsky   (2005-03-03 21:08:00) [32]

Никакого различия с обычным, должно быть только разное имя


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо