我在实现接口(interface)的类中创建了一个类方法,但我似乎无法在接口(interface)内部定义它。
IMyClass = interface
procedure someproc();
class function myfunc() : TMyClass; // compiler doesn't like this!
end;
TMyClass = class( TInterfacedObject, IMyClass )
public
procedure someproc();
class function myfunc() : TMyClass;
end;
我希望 myfunc()
创建并返回 TMyClass
的实例。例如:
somefunc( TMyClass.myfunc(), ... );
创建 TMyClass
的实例并将其传递给 somefunc
。
我可以在 IMyClass 接口(interface)中定义 function myfunc() : TMyClass;
,但是如果我将 class
放在它前面,编译器会给我一个错误。如果我保留它,它会给我带来几个其他错误“E2291 缺少接口(interface)方法 xyz.myfunc 的实现”它只是不接受接口(interface)中与类中相同的签名。
我以为我以前见过这个工作(接口(interface)中定义的类方法),但也许没有。
如果这不直接支持,你该怎么做?
(我正在使用 Delphi XE5,以防万一。)
最佳答案
接口(interface)不是类,也不支持标记为class
的方法,它们仅支持在对象实例上实现和调用的非class
方法。
您正在寻找的内容很可能必须作为类工厂来实现,而不是使用接口(interface)。
关于delphi - 如何在Delphi中支持接口(interface)定义中的类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26184629/