Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.28;
Скачать: CL | DM;

Вниз

Class-reference types   Найти похожие ветки 

 
Ш-К   (2004-03-10 10:06) [0]

Есть у меня два класса (один наследник другого):

 TCustItem = class
   Field: string;
   constructor Create;
 end;

 TMyItem = class(TCustItem)
   constructor Create;
 end;

...

constructor TMyItem.Create;
begin
 Field := "TMyItem";
end;

constructor TCustItem.Create;
begin
 Field := "TCustItem";
end;

Есть ещё два класса, тоже один потомок другого:

 TCustItemClass = class of TCustItem;

 TCustList = class
   fitem: TCustItem;
 public
   function GetItemClass: TCustItemClass; virtual;
   constructor Create;
 end;

 TMyList = class(TCustList)
 public
   function GetItemClass: TCustItemClass; override;
 end;

...

constructor TCustList.Create;
begin
 fItem := GetItemClass.Create;
end;

function TMyList.GetItemClass: TCustItemClass;
begin
 result := TMyItem;
end;

function TCustList.GetItemClass: TCustItemClass;
begin
 result := TCustItem;
end;

Вообщем идея такая, что тип поля fItem зависит от того, полем какого класса он является. Для TCustList -> TCustItem, для TMyList -> TMyItem.

Дело в том, что когда я инициализирую fItem, вызывается только конструктор TCustList, не зависимо от того, какой тип у fItem.
Как сделать так, чтобы при инициализации fItem: TMyItem, вызывался конструктор TMyItem?


 
PVOzerski ©   (2004-03-10 10:12) [1]

Как насчет виртуальных конструкторов?


 
Ш-К   (2004-03-10 10:16) [2]

Спасибо.


 
icWasya ©   (2004-03-10 11:05) [3]

Посмотри ещё TCollection и TCollectionItem из модуля Classes



Страницы: 1 вся ветка

Текущий архив: 2004.03.28;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.024 c
4-1073414279
Qwet
2004-01-06 21:37
2004.03.28
Зарегистрировать Hotkey которую выбрал


3-1077476512
kba
2004-02-22 22:01
2004.03.28
Kak s TUPDATESQL da update BLOB


9-1062001143
Ландграф Павел
2003-08-27 20:19
2004.03.28
Посмотрите мою игрушку (2D скролл-аркада на DelphiX c исходникам)


6-1074061607
Клювокрылый
2004-01-14 09:26
2004.03.28
php сервер


4-1073685425
Вадим
2004-01-10 00:57
2004.03.28
Переключить раскладку клавиатуры в чужом приложении