delphi - 如何在Delphi中支持接口(interface)定义中的类方法

标签 delphi oop interface

我在实现接口(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/

相关文章:

c++ - 类接口(interface) : Basic or Complex?

oop - matlab subsref : {} with string argument fails, 为什么?

language-agnostic - "program to an interface"是什么意思?

delphi - 如何在Delphi中按给定的数字增加IP地址?

delphi - Windows 服务和 TThread

python - 通过 getattr 访问方法

c# - 从类(class)内部访问类(class)成员

objective-c - 接口(interface)声明了两次? - Objective-C

c# - 使用 Chromium Embedded 有没有办法从 Javascript 与程序通信?

delphi - Excel 类型库/Delphi 2009/错误的变量类型