Форум: "Основная";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.033 c