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

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

Виртуальный конструктор. Как правильно переопределять?


Kolan ©   (2006-10-05 12:20:00) 

Здравствуйте,
 Никак не пойму одну вещь:

Возмем любой класс с виртуальным коструктором.  Например TComponent.

И его наследника.

TMyOwnComponent = class(TComponent)
 public
   constructor Create(AOwner: TComponent); override;
 end;


Компилируем все ОК.

А что если мне нужнопередать в конструктор параметр? Те

TMyOwnComponent = class(TComponent)
 public
   constructor Create(AOwner: TComponent;
     CompulsoryFactor: Integer); override;
 end;


Естественно:
[Pascal Error] Unit1.pas(19): E2037 Declaration of 'Create' differs from previous declaration

Тогда делаю так:

TMyOwnComponent = class(TComponent)
 public
   constructor Create(AOwner: TComponent;
     CompulsoryFactor: Integer);
 end;


В этом случае имею противный Ворнинг, который мне ненравится

[Pascal Warning] Unit1.pas(19): W1010 Method 'Create' hides virtual method of base type 'TComponent'

Так а как правильно?


Kolan   (2006-10-05 12:26:00) [1]


> clickmaker ©   (05.10.06 12:25) [3]

Понятно :)


Kolan   (2006-10-05 12:25:00) [2]


> Stakan ©   (05.10.06 12:22) [1]

Те это подход правильный, только нужно подавить Warning?


clickmaker   (2006-10-05 12:25:00) [3]

constructor Create(AOwner: TComponent;
      CompulsoryFactor: Integer); reintroduce;


Stakan   (2006-10-05 12:22:00) [4]

reintroduce;


Наверх

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