4
type 
    TParent=class 
    public 
     member1:Integer; 
    end; 

    TChild=class(TParent) 
    public 
    member2:Integer; 
    end; 


    TGArray<T: TParent>=class 
    public 
     function test:T; 
    end; 

    implementation 

    var g:TGArray<TChild>; 

    function TGArray<T>.test:T; 
    begin 
     Result:=??.create; // <<<< Problem ! 
    end; 


    begin 
    g := TGArray<TChild>.Create; 
    g.test.member2 := 1234; 
    end. 

g.test doit renvoyer une instance de la classe. J'ai essayé plusieurs choses:Polymorphisme dans les génériques Delphi

1. Result := Result.create; //Exception 
2. Result := TChildClass.Create; //Error 
3. type TGArray<T: class> = class; //and above 2. The same errors/exceptions. 

Le but de ceci est de créer un tableau générique de classes. Le tableau est stocké dans la classe générique et renvoie des instances, mais comment?

Si j'accomplis cette chose, je raccourcirai mon code 3 fois, mais je ne peux pas le faire. S'il vous plaît suggérer une solution.

Répondre

7

Vous ne dites pas ce que l'erreur dans le n ° 2 est, mais je parie qu'il vous le dit requires a constructor constraint. Ajouter un et il devrait fonctionner.

+1

Il est écrit "Vous pouvez accepter une réponse en 47 secondes", merci! –