1

如何將TypeIdenitifier轉換爲類類型?我需要使用隱式轉換。泛型TypeIdenitifier轉換。如何?

type 
    TMyChildArray<T>=class(TMyArray<T>) 
    private 
     FData:Array of T; 
     procedure AddEnd(); 
    end; 

    TTypeIdenitifierParentClass=class(TAnotherParentClass) 
    protected 
     TestField:Cardinal; 
    end; 


    procedure TMyChildArray<T>.AddEnd(); 
    var elem:T; 
    begin 
    for elem in Fdata do 
     TTypeIdenitifierParentClass(elem).TestField:=0; 
    end; 

我上隱式轉換的交互 「無效類型轉換」, 「TTypeIdenitifierParentClass(ELEM).TestField:= 0;」。

我想要使用的原理是TypeIdenitifier將表示一個從TTypeIdenitifierParentClass繼承而來的類。有很多類類型,但是它們全部都屬於這個類。

我該怎麼做?

回答

2

德爾福原因是抱怨投是因爲編譯器沒有辦法知道如果T的類型可以是鑄造爲「TTypeIdenitifierParentClass」的方式。你需要與T限制類由「TTypeIdenitifierParentClass」

降嘗試以下

type 
    TTypeIdenitifierParentClass=class(TAnotherParentClass) 
    protected 
     TestField:Cardinal; 
    end; 

    TMyChildArray<T: TTypeIdenitifierParentClass>=class(TMyArray<T>) 
    private 
     FData:Array of T; 
     procedure AddEnd(); 
    end; 

    procedure TMyChildArray<T>.AddEnd(); 
    var elem:T; 
    begin 
    for elem in Fdata do 
     elem.TestField:=0; 
    end; 
+0

正是我所做的! :) – 2010-04-18 12:44:51