Class 类方法-此形式的方法调用仅允许用于类方法
我正在Delphi中创建一个类过程(其中包含另一个过程),并收到以下错误消息: 这种形式的方法调用只允许用于类方法 以下是我为测试而创建的一些代码:Class 类方法-此形式的方法调用仅允许用于类方法,class,delphi,Class,Delphi,我正在Delphi中创建一个类过程(其中包含另一个过程),并收到以下错误消息: 这种形式的方法调用只允许用于类方法 以下是我为测试而创建的一些代码: type TTestClass = class private procedure PrivateProc; public class procedure PublicProc; end; procedure TTestClass.PrivateProc; begin ShowMessage('TestClas
type
TTestClass = class
private
procedure PrivateProc;
public
class procedure PublicProc;
end;
procedure TTestClass.PrivateProc;
begin
ShowMessage('TestClass.PrivateProc');
end;
class procedure TTestClass.PublicProc;
begin
PrivateProc; // ERROR: This form of method call only allowed for class methods
ShowMessage('TestClass.PublicProc');
end;
第一种方法:将PrivateProc转换为类过程。这种方法的问题是,PublicProc内部可能有许多其他私有过程和函数,而其他过程和函数也在其中
type
TTestClass = class
private
class procedure PrivateProc;
public
class procedure PublicProc;
end;
class procedure TTestClass.PrivateProc;
begin
ShowMessage('TestClass.PrivateProc');
end;
class procedure TTestClass.PublicProc;
begin
PrivateProc;
ShowMessage('TestClass.PublicProc');
end;
第二种方法:在调用PrivateProc之前在PublicProc中创建自己的类
type
TTestClass = class
private
procedure PrivateProc;
public
class procedure PublicProc;
end;
procedure TTestClass.PrivateProc;
begin
ShowMessage('TestClass.PrivateProc');
end;
class procedure TTestClass.PublicProc;
begin
with TTestClass.Create do
try
PrivateProc;
finally
Free;
end;
ShowMessage('TestClass.PublicProc');
end;
请问,我为什么会收到这个错误消息(找不到合理的解释)以及解决这个问题的最佳方法是什么?谢谢 类过程没有对“拥有”它的对象的引用,只有拥有它的类。因此,它不能调用需要引用拥有它的类的过程,如PrivateProc。如果您将PrivateProc设置为类过程,或者将publicProc设置为非类过程,那么它将起作用。正如您已经发现的,您需要一个对象实例来调用非
类
过程。类
过程不需要对象实例。在第一个示例中,您的PublicProc
无法访问TTestClass
的对象实例,因此出现错误。好的,理解。非常感谢。