2017-07-10 144 views
1

我試圖做somenthing如下所示:德爾福2010年和泛型

type 
    IExemplo<Generic> = interface 
    function GetGenerico: Generic;  
    end; 

    TClassA<Generic> = class(TComponent, IExemplo<Generic>) 
    function GetGenerico: Generic; virtual; 
    function GetInterface: IExemplo<Generic>; virtual; 
    end; 

    TClassB = class(TClassA<string>) 
    function GetGenerico: string; override; 
    function GetInterface: IExemplo<string>; override; 
    end; 

換句話說,我創建具有一些泛型,一個基類來實現該接口的接口,最後是一個派生類實現基類。

但是,在該行

function GetInterface: IExemplo<string>; override; 

我得到一個語法錯誤。

我的目標是讓TClassB不再具有通用屬性,此時其類型已被正確設置。

回答

4

此代碼是有效的,並在Delphi的更高版本中編譯。事實上,它爲Delphi 2010編譯,所以我想知道你是否可能沒有安裝all the updates that are available for Delphi 2010

Delphi的泛型在早期版本中充滿了缺陷。從一定距離來看,最實用的方法是讓您升級到Delphi的現代版本,以逃避這些缺陷的暴政。是的,您可以通過安裝Delphi 2010更新程序來解決問題,但我相信您會在不久之後遇到其他與泛型相關的問題。

+0

在Xe2其作品! – Christino