下面的代码不能编译,但是有可能吗?可以使用静态方法实现接口吗?
IDefaultHelp = interface
['{6997FC42-7481-4CDA-940A-0351071266C7}']
function GetTemplate: TXMLDocument;
end;
TDefaultHelp = class(TInterfacedObject, INodeHelp)
class function GetTemplate: TXMLDocument; static; <<-- error
end;
我不想实例化实现对象。
有没有一种方法来实现接口,而不必Create
一个实际的类?
如果没有实例,谁去跟踪引用计数吗? –
当然,你可能不想引用计数。因此,如果您正在寻找静态方法的接口,请查看默认比较器接口在泛型单元中的实现方式。用函数指针的记录按vtable的顺序排列。 –
是的,这对于非refcounting接口是可能的;你仍然需要一个实例(没有没有实例的接口),但是你可以声明实例为一个常量,所以你不需要在运行时创建一个实例。 – kludg