J'ai une liste d'instances de classes de différents types. Je dois être capable de créer une nouvelle instance d'une classe sans savoir avec certitude quoi créer. tous les objets impliqués ont le même ancêtre. la copie réelle des variables membres de l'objet est facile ... c'est la création du nouvel objet où j'ai un problème.Comment puis-je créer une nouvelle instance d'une classe?
il est vrai que je pouvais faire quelque chose comme ceci:
case MyObjectTypeInstance.MyTypeEnum of
obj1:
Result:=TObjectType1.Create;
obj2:
Result:=TObjectType2.Create;
obj3:
Result:=TObjectType3.Create;
end;
qui ne suivraient pas le « principe ouvert/fermé ». Au début, je pensais que je pourrais faire quelque chose comme "Résultat: = MyObjectTypeInstance.Create;" mais cela n'a pas fonctionné comme espéré à cause des difficultés des destructeurs.
est ici la dernière estimation comment je devrais faire ça ...
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;
j'aurais pensé this'd plus facile!
je vous remercie pour votre aide!
oui ... bien sûr! J'aurais dû y penser! Je vous remercie! –