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必須返回該類的一個實例。我嘗試了多種東西:Delphi中的多態性泛型

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

這樣做的目的是創建一個泛型數組。數組存儲在泛型類中並返回實例,但是如何實現?

如果我完成這件事,我會縮短我的代碼3次,但我做不到。請提出任何解決方案。

回答

7

你不說第二個錯誤是什麼,但我敢打賭它告訴你它requires a constructor constraint.加一個,它應該工作。

+1

它說「你可以在47秒內接受答案」,謝謝! – 2010-05-14 18:08:08