![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Виртуальный конструктор. Как правильно переопределять?
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;