Delphi 如何制作子类';什么方法是静态的?

Delphi 如何制作子类';什么方法是静态的?,delphi,class,Delphi,Class,我的父类是一个表单(TParent),下面是代码: type TChild = class(TParent) private procedure Handle(sock:integer);static; //error end; implementation 错误为“静态只能用于非虚拟方法” 有什么可行的方法吗 如果不是,我可以使父类(TForm)成为静态的吗 TParent类是一个用于WSAAsyncSelect()的表单,它是隐藏的(不是主表单)。它只用于消息循环。尝试以下操作: t

我的父类是一个表单(TParent),下面是代码:

type
TChild = class(TParent)
private
  procedure Handle(sock:integer);static; //error
end;

implementation
错误为“静态只能用于非虚拟方法”

有什么可行的方法吗

如果不是,我可以使父类(TForm)成为静态的吗

TParent类是一个用于WSAAsyncSelect()的表单,它是隐藏的(不是主表单)。它只用于消息循环。

尝试以下操作:

type
TChild = class(TParent)
private
 class procedure Handle(sock:integer); static;
end;
试试这个:

type
TChild = class(TParent)
private
 class procedure Handle(sock:integer); static;
end;

对不起,我忘了将类放在过程之前,再次测试它,它应该可以工作。您真的需要这里的“static”关键字吗?。该过程已经是C意义上的“静态”过程,将其声明为“类过程”。据我所知,“static”关键字是在不久前为了与.NET兼容而引入的,它的作用是不允许引用在当前过程之外声明的变量,并抑制隐式的“Self”参数。“static”关键字似乎在本机代码中引入了不必要的限制。是的,Mike,
static
很重要。Delphi的类方法有一个“Self”参数,就像普通方法一样。在本例中,它保存类引用,例如
TChild
。它与C++的静态成员函数不同;为此,您需要Delphi的
静态
。静态类方法不能是虚拟的,但它们可以在通常需要独立过程的情况下使用。然而,我们真的不知道这里是否需要
static
,因为我们还没有被告知
Handle
函数应该做什么。调用过程句柄也令人困惑,因为它是TForm(继承自TWinControl)@Rob的一个属性的名称。是的,我同意我有点自以为是,因为我们不知道示例过程的上下文,但您的其余评论似乎同意我的观点。我想我会发布一个关于这个主题的新问题。对不起,我忘了把类放在过程之前,再次测试它,它应该可以工作。你真的需要这里的“static”关键字吗?。该过程已经是C意义上的“静态”过程,将其声明为“类过程”。据我所知,“static”关键字是在不久前为了与.NET兼容而引入的,它的作用是不允许引用在当前过程之外声明的变量,并抑制隐式的“Self”参数。“static”关键字似乎在本机代码中引入了不必要的限制。是的,Mike,
static
很重要。Delphi的类方法有一个“Self”参数,就像普通方法一样。在本例中,它保存类引用,例如
TChild
。它与C++的静态成员函数不同;为此,您需要Delphi的
静态
。静态类方法不能是虚拟的,但它们可以在通常需要独立过程的情况下使用。然而,我们真的不知道这里是否需要
static
,因为我们还没有被告知
Handle
函数应该做什么。调用过程句柄也令人困惑,因为它是TForm(继承自TWinControl)@Rob的一个属性的名称。是的,我同意我有点自以为是,因为我们不知道示例过程的上下文,但您的其余评论似乎同意我的观点。我想我会发布一个关于这个主题的新问题。