Die Anforderung aus dem Link würde ich so umsetzen.
Da kann auch jeder mit jedem und die lästige Forward-Deklaration fällt auch weg.
Delphi-Quellcode:
type
TThing = class
procedure CollideWith( Thing : TThing );
end;
TShip = class( TThing )
end;
TAsteroid = class( TThing )
end;
TBase = class( TThing )
end;
TThingCollisionHelper = class helper for TThing
procedure CollideWith( Thing : TShip ); reintroduce; overload;
end;
TShipCollisionHelper = class helper for TShip
procedure CollideWith( Thing : TShip ); reintroduce; overload;
procedure CollideWith( Thing : TAsteroid ); reintroduce; overload;
procedure CollideWith( Thing : TBase ); reintroduce; overload;
end;
TAsteroidCollisionHelper = class helper for TAsteroid
procedure CollideWith( Thing : TShip ); reintroduce; overload;
procedure CollideWith( Thing : TAsteroid ); reintroduce; overload;
end;
Kaum macht man's richtig - schon funktioniert's

Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)