У меня есть список экземпляров классов различных типов. Мне нужно создать новый экземпляр класса, не зная наверняка, что создавать. все задействованные объекты имеют одного и того же предка. фактическое копирование переменных-членов объекта легко ... это создание нового объекта, в котором у меня проблема.Как создать новый экземпляр класса?
правда я мог бы сделать что-то вроде этого:
case MyObjectTypeInstance.MyTypeEnum of
obj1:
Result:=TObjectType1.Create;
obj2:
Result:=TObjectType2.Create;
obj3:
Result:=TObjectType3.Create;
end;
, что не будет следовать «открытый/закрытый принцип».
Первоначально я думал, что могу сделать что-то вроде «Результат: = MyObjectTypeInstance.Create;» но это не так надеялось из-за трудностей деструктора.
вот последнее предположение, как я должен делать это ...
var
fooA, fooB:TFoo;
begin
fooA:=TFoo2.Create; // it could be any of many types
fooB:=? // how to create fooB of same class type as fooA????
// do something
fooA.Free;
fooB.Free;
end;
я бы мог подумать this'd быть проще!
Благодарим за помощь!
да ... конечно! я должен был подумать об этом! Спасибо! –