Главная страница
    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.45 MB
Время: 0.023 c
1-1079044735
Kneaz
2004-03-12 01:38
2004.03.28
dobaviti svojstvo CheckBox v komponent TreeView


14-1077862572
syte_ser78
2004-02-27 09:16
2004.03.28
Замыкание на себя


7-1072779417
Davey
2003-12-30 13:16
2004.03.28
!!!!!!!!!!!!!!!!!!<NtQuerySystemInformation>!!!!!!!!!!!!!!!


7-1072588633
want_driver
2003-12-28 08:17
2004.03.28
Написание драйвера


1-1079025693
Василий Петрович
2004-03-11 20:21
2004.03.28
DelimitedText





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский