2013-04-16 36 views
0

我有叫ILoader的接口。這是一種加載資源文件的對象。FreePascal的界面:該功能可將返回「任何東西」

ILoader = interface 
    function Load: TObject; 
    function FormatName: String; 
    end; 

很簡單。現在,我想要有多種類型的Loader,TSurfaceLoader,TSoundLoader,TMusicLoader等。

問題是,我如何在interface中指定從函數返回的內容?該SurfaceLoader將承載表面,但Surface不是TObject,因此它不會工作。

我該怎麼辦?只是把界面全部放在一起? (我可能會展開它,它不會永遠是這個小的。)

+0

A表面不是TObject的?那這是什麼? –

+0

@Robkennnedy這是一個記錄,我想。 –

回答

0

接口是一種精確的合同會發生什麼,所以你不能讓它變。

一種解決方案是簡單地強制轉換:

something_of_tsurfaceloader:=TSurfaceLoader(myILoaderIntf.GetObject); 

設計出來的界面可能會更好與否,這取決於。這些日常選擇讓生活作爲一個程序員有意思:)