下面的代碼不能編譯,但是有可能嗎?可以使用靜態方法實現接口嗎?
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