程序考慮這個類:類功能/程序和實例函數/名稱相同
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.
我想用一個類的函數,並具有相同名稱的實例函數。 可悲的是德爾福不喜歡這一點,編譯器barfs這些錯誤:
[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'
我的問題:這是可能的還是這只是一個語言的限制(而我需要重命名的2種方法之一)?
AFAIK,這是不可能的。編譯器應該如何知道你想調用哪個函數?當你調用一個類函數時,它可能是顯而易見的,但當你在一個實例上調用它時,它可能是顯而易見的。 – 2014-10-01 08:43:22
好點Uwe,那一定是原因... – whosrdaddy 2014-10-01 08:45:29
只需使用不同的名字。你試圖達到的是國際海事組織濫用職能超載;只有編譯器不允許它。 – kludg 2014-10-01 08:53:22