gpt4 book ai didi

delphi - 类函数/过程和实例函数/过程同名

转载 作者:行者123 更新时间:2023-12-02 04:33:28 25 4
gpt4 key购买 nike

考虑这个类:

unit u_myclass;

interface

type
TMyClass = class
public
class function Foo : Integer;
function Foo : Integer;
end;

implementation

{ TMyClass }
class function TMyClass.Foo: Integer;
begin
Result := 10;
end;

function TMyClass.Foo: Integer;
begin
Result := 1;
end;

end.

我想使用同名的类函数和实例函数。遗憾的是 Delphi 不喜欢这样,编译器会抛出这些错误:

[DCC Error] u_myclass.pas(9): E2252 Method 'Foo' with identical parameters already exists
[DCC Error] u_myclass.pas(20): E2037 Declaration of 'Foo' differs from previous declaration
[DCC Error] u_myclass.pas(9): E2065 Unsatisfied forward or external declaration: 'TMyClass.Foo'

我的问题:这可能吗,还是这只是语言限制(我需要重命名这两种方法之一)?

最佳答案

不可能对实例方法和类方法使用相同的名称。不允许这样做是因为在某些场景下编译器无法区分它们。

例如,如果你写:

procedure TMyClass.Bar;
begin
Foo;
end;

那么编译器就无法确定你是要调用类方法还是实例方法。

关于delphi - 类函数/过程和实例函数/过程同名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26137157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com