Das Ganze kannste auch noch ein wenig eleganter lösen, da in TuWasBesonderes immer
das Gleiche gemacht wird:
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;
Nein, so geht's nicht. Hier würde ja jedes mal v.Visit(TVisitableBase) aufgerufen werden.
Das gibt's aber nicht. Es gibt lediglich Überladungen mit TClass1 und TClass2 und die muss ich auch entsprechend aufrufen