Форум: "Основная";
Текущий архив: 2003.05.29;
Скачать: [xml.tar.bz2];
ВнизСоздание нового объекта из данного Найти похожие ветки
← →
Григорий Поваров (2003-05-16 16:48) [0]Есть объект, надо создать новый того же класса. В настоящий момент делается следующим образом, но что-то мне кажется, что это не самый верный способ:
var
NewItem : TNameSpaceItem;
begin
// Item является наследником от TNameSpaceItem
NewItem := Item.ClassType.Create() as TNameSpaceItem;
NewItem.Create();
// ...
end;
Буду благодарен.
← →
Skier (2003-05-16 16:51) [1]>Григорий Поваров
1) RegisterClass(es)
2) GetClass or FindClass
← →
Skier (2003-05-16 16:54) [2]>Григорий Поваров
в твоём случае лучше через метакласс
TNameSpaceItemСlass = class of TNameSpaceItem;
← →
Григорий Поваров (2003-05-16 17:04) [3]Item является наследником от TNameSpaceItem - их много разных - какой именно я не знаю. Но мне надо создать экземпляр именно того класса, каким является Item, а не какого-то другого пусть тоже наследника от TNameSpaceItem.
← →
rounin (2003-05-16 17:05) [4]type
TNameSpaceItemСlass = class of TNameSpaceItem;
...
NewItem := TNameSpaceItemClass(Item.ClassType).Create;
Конструктор должен быть виртуальным, введённый в классе
TNameSpaceItem
//NewItem.Create(); - это выкинуть
← →
VMcL (2003-05-16 17:11) [5]Если конструктор виртуальный, то вроде, должно сработать так:
TNameSpaceItemClass = class of TNameSpaceItem;
...
NewItem := TNameSpaceItemClass(Item.ClassType).Create(...);
← →
Григорий Поваров (2003-05-16 17:14) [6]thnx a lot
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.05.29;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c