2013-04-16 35 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); 

设计出来的界面可能会更好与否,这取决于。这些日常选择让生活作为一个程序员有意思:)