Oh ja. Ich hatte übersehen, dass overload schon zur Compilezeit ausgewertet wird.
Dann dürfte aber der Code
Delphi-Quellcode:
// Unit A
type
IVisitor =
interface
procedure Visit(
const x: TClass1);
overload;
procedure Visit(
const x: TClass2);
overload;
end;
TVisitableBase =
class
procedure AcceptVisitor(
const v: IVisitor);
end;
TClass1 =
class(TVisitableBase)
// viele Methoden...
end;
TClass2 =
class(TVisitableBase)
// viele Methoden...
end;
procedure TVisitableBase.AcceptVisitor(
const v: IVisitor);
begin
v.Visit(self);
end;
nicht kompilieren, da es ja keine überladene procedure Visit für TVisitableBase gibt - oder?